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

TM7P IIC, I2C светодиодный линейный индикатор c двумя АЦП, STM32F030F4P6
Есть в наличии. Отгрузка со склада в Москве 3 рабочих дня.
313.30 × = 313.30

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

То, что у вас уже есть, вы можете удалить в корзине.

НаименованиеЦенаКол-во
Печатная плата tm7pv2, Печатная плата с разводкой, FR4 25.4х25.4мм (1.5мм, 18мкм) 130 1
STM32F030F4P6, Микроконтроллер 32-Бит, Cortex-M0, 48МГц, 16КБ Flash [TSSOP-20] 49 1
LP2985AIM5-3.3/NOPB, Малошумящий стабилизатор напряжения с отключением (0.01мкА), 150мА, 3.3В [SOT23-5] 30 1
Кер.ЧИП конд. 4.7 мкФ Y5V 10% 10В 0603, GRM188F51A475ZE20D 3 4
Кер.ЧИП конд. 0.01 мкФ,Y5V 50В,+80-20%,0603 0.90 1
Кер.ЧИП конд. 0.1мкФ,Y5V 50В, 20%,0603 0.90 3
TECAP, 10 мкФ, 10 В, тип A, 10%, Конденсатор танталовый SMD 9 1
0.063Вт 0603 390 Ом, 5%, Чип резистор (SMD) 0.90 10
0.063Вт 0603 4.7 кОм, 5%, Чип резистор (SMD) 0.90 2
0.063Вт 0603 10 кОм, 5%, Чип резистор (SMD) 0.90 1
KP-2012EC, Светодиод красный 2х1.2х1.1 12мКд 8 2
KP-2012SGC, Светодиод зеленый 2х1.2x1.1 15мКд 6 8
PLS-6 (DS1021-1x6), Вилка штыревая 2.54мм 1x6 прямая тип1 4 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);
  
}

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

Видео

Комментарии