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

Есть в наличии. Отгрузка со склада в г.Москва 1 рабочий день.
Возможна срочная доставка сегодня
307.30 руб. × = 307.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В, +80-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мКд 5 руб. 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);
  
}

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

Комментарии