TM7P IIC, I2C светодиодный линейный индикатор c двумя АЦП, STM32F030F4P6

TM7P IIC, I2C светодиодный линейный индикатор c двумя АЦП, STM32F030F4P6
* Изображения служат только для ознакомления,
см. техническую документацию
Это набор компонентов (см. спецификацию)
390 руб.
Добавить в корзину 1 шт. на сумму 390 руб.
В кредит от 0 руб./мес
Номенклатурный номер: 9000347878
Артикул: TM7P IIC
Страна происхождения: РОССИЯ
Бренд / Производитель: DIY

Спецификация набора

Наименование Цена Кол-во
TM7PA, Светодиодный линейный двухканальный индикатор уровня. 390 руб. 1

Описание

Новая прошивка изменяет свойства модуля TM7P. Модуль настроен на работу с последовательным интерфейсом I2C. Получилось I2C Slave устройство.

Новые возможности модуля:

1) Отображение значения измеряемого напряжения на светодиодной шкале.
2) Управление по I2C.
3) Передача по I2C текущих показаний каналов АЦП.
4) Выбор режима отображения шкалы.
5) Задание максимального входного напряжения для соответствия крайнему положению шкалы.
6) Управление светодиодами независимо от показаний АЦП.

Подробную информацию можно найти в файле << TM7P_I2C_описание команд >>
Для подключения модуля к Мастеру используются выводы С = SCL, D = SDA.
В скетче пример для использования модуля с Arduino

Это открытый проект! Лицензия, под которой он распространяется – Creative Commons - Attribution - Share Alike license.

Скетч. Код программы

#include <Wire.h>


#define   I2C_DEV_ADR     0x20 //адрес TM7K_I2C


byte Val = 0;


void setup()
{
  Serial.begin(9600);
  Wire.begin();

  
}

void loop()
{
  
  Val = 0;
  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x10); //команда выбора режима
  Wire.write(0x03); //SAM = 0; SPM = 1; RVM = 1; 
                    //отображаются все светодиоды до текущей позиции
                    //возможно произвольное отображение отдельных светодиодов
                    //отображается принятое значение
  Wire.endTransmission(); //стоп

  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x11); //команда выбора режима + выбор канала
  Wire.write(0x03); //SAM = 0; SPM = 1; RVM = 1; 
                    //отображаются все светодиоды до текущей позиции
                    //возможно произвольное отображение отдельных светодиодов
                    //отображается принятое значение
  Wire.endTransmission(); //стоп

  for (byte i = 0; i < 12; i++)
  {
    Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
    Wire.write(0x20); //команда записи значения для отображения + выбор канала
    Wire.write((byte)(1 << Val));         //значение
    Wire.endTransmission(); //стоп

    Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
    Wire.write(0x21); //команда записи значения для отображения + выбор канала
    Wire.write((byte)(1 << (5 - Val)));         //значение
    Wire.endTransmission(); //стоп
    delay(100);

    Val++;
    if (Val == 6)
      Val = 0;
  }


  Val = 0;
  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x10);        //команда выбора режима + выбор канала
  Wire.write(0x01);        //SAM = 0; SPM = 0; RVM = 1; 
                    //отображаются все светодиоды до текущей позиции
                    //произвольное отображение отдельных светодиодов невозможно 
                    //отображается принятое значение
  Wire.endTransmission();    //стоп

  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x11);        //команда выбора режима + выбор канала
  Wire.write(0x01);        //SAM = 0; SPM = 0; RVM = 1; 
                    //отображаются все светодиоды до текущей позиции
                    //произвольное отображение отдельных светодиодов невозможно 
                    //отображается принятое значение
  Wire.endTransmission();    //стоп

  for (byte i = 0; i < 12; i++)
  {
    Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
    Wire.write(0x20);        //команда записи значения для отображения
    Wire.write(Val);          //значение  
    Wire.endTransmission();   //стоп

    Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
    Wire.write(0x21);        //команда записи значения для отображения
    Wire.write(5 - Val);          //значение  
    Wire.endTransmission();   //стоп
    delay(100);

    Val++;
    if (Val == 6)
    {
      Val = 0;
    }
  }


  Val = 0;
  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x10);        //команда выбора режима + выбор канала
  Wire.write(0x81);        //SAM = 1; SPM = 0; RVM = 1; 
                    //светодиод отображается только на текущей позиции
                    //произвольное отображение отдельных светодиодов невозможно
                    //отображается принятое значение  
  Wire.endTransmission();    //стоп

  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x11);        //команда выбора режима + выбор канала
  Wire.write(0x81);        //SAM = 1; SPM = 0; RVM = 1; 
                    //светодиод отображается только на текущей позиции
                    //произвольное отображение отдельных светодиодов невозможно
                    //отображается принятое значение  
  Wire.endTransmission();    //стоп
  delay(100);
  
  for (byte i = 0; i < 12; i++)
  {
    Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
    Wire.write(0x20);        //команда записи значения для отображения + выбор канала
    Wire.write(Val);          //значение  
    Wire.endTransmission();   //стоп

    Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
    Wire.write(0x21);        //команда записи значения для отображения + выбор канала
    Wire.write(5 - Val);          //значение  
    Wire.endTransmission();   //стоп
    delay(100);

    Val++;
    if (Val == 6)
    {
      Val = 0;
    }
  }


  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x30);        //команда чтения показаний АЦП + выбор канала
  Wire.endTransmission();   //стоп
  //чтение показаний АЦП
  unsigned int ADCData = 0;
  Wire.requestFrom(I2C_DEV_ADR, 2);    // старт, передача адреса + бит чтения
  for (byte i = 0; i < 2; i++)
    ADCData |= Wire.read() << (8 * i); //чтение данных
  Serial.println(ADCData); //вывод показаний АЦП

  Wire.beginTransmission(I2C_DEV_ADR); //старт, передача адреса + бит записи
  Wire.write(0x31);        //команда чтения показаний АЦП + выбор канала
  Wire.endTransmission();   //стоп
  //чтение показаний АЦП
  ADCData = 0;
  Wire.requestFrom(I2C_DEV_ADR, 2);    // старт, передача адреса + бит чтения
  for (byte i = 0; i < 2; i++)
    ADCData |= Wire.read() << (8 * i); //чтение данных
  Serial.println(ADCData); //вывод показаний АЦП
  
  Serial.println();
  delay(1000);
  
}

Техническая документация

Видео