Светодиодный сегментный цифровой индикатор

Попал ко мне вот такой светодиодный индикатор. Никакой информации по работе с ним я не нагуглил.

В Интернете он обозначался как «IIC I2C 0.36″ 8seg-4digit Red LED Digital Tube Display». Интерфейс подключения I2C. 256 градаций яркости. Возможность изменения адреса на шине от 0x00 до 0xFF.

Инструкция в Интернете нашлась только для первой версии дисплея, а у меня v1.1 и к нему не подходила. На сайте автора ничего нет кроме полей авторизации. Решил написать автору на электронную почту, на следующее утро получил ответ с прикреплённым архивом. В архиве были библиотеки для Arduino, даташит, а также пример управления из под Linux.

P.S. Ещё одну версию библиотеки (правда с небольшими ошибками) я всё-таки нагуглил на гитхаб.

Может кому-то тоже попадётся такой модуль, поэтому немного опишу принцип работы с ним.

Для тестирования я просто написал скетч, который увеличивает значение на единицу каждую секунду.

#include <Arduino.h>
#include <Wire.h>
#include <ZtLib.h>
 
//Адрес дисплея
#define OLED_ADDRESS 0x27
 
ZtLib led;
 
int i=0;
 
void setup()
{
  delay(1000);
  led.I2cInit();
  //включаем дисплей
  led.Seg8b4a036aUnSleep(OLED_ADDRESS);
  //Пример управления яркостью
  //led.Seg8b4a036aSetBrightness(OLED_ADDRESS, 0x20, 0xFF-0x20);
}
 
void loop()
{
  //Вывод
  led.Seg8b4a036aDisplayDec(0x27,i,4,0);
  i++;
  delay(1000);
  if (i==10000) {i=0;}
}

Подключение очень простое: подаём на дисплей питание 5 вольт, землю. Соединяем шину I2C через пины SDA и SCL. Контакт RST подключать необязательно, он служит лишь для сброса данных на дисплее при сбросе ардуины.

Основные функции библиотеки ZtLib:

  • I2cInit(void) — инициализация;
  • Seg8b4a036aSleep(uint8_t addr) — выключение экрана;
  • Seg8b4a036aUnSleep(uint8_t addr) — включение экрана;
  • Seg8b4a036aDisplayDec(uint8_t addr,unsigned short val, uint8_t bitnum, uint8_t dotbit) — вывод десятичного значения;
  • Seg8b4a036aDisplayHex(uint8_t addr,unsigned short val, uint8_t bitnum, uint8_t dotbit) — вывод 16-ричного значения;
  • Seg8b4a036aSetBrightness(uint8_t addr, uint8_t OnDelay, uint8_t OffDelay) — установка яркости.

bitnum — количество цифр, которые необходимы вывести (с конца). dotbit — биты установки запятых.

Предупреждение!
Автор не несёт ответственности за возможную порчу оборудования. Всё, что вы делаете — вы делаете на свой страх и риск!