Мой регион: Россия

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

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

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

НаименованиеЦенаКол-во
TM7PA, Светодиодный линейный двухканальный индикатор уровня. 240 руб. 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);
  
}

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

Видео

Выберите регион, чтобы увидеть способы получения товара.

Комментарии