LED Матрица 8x8 - i2c (Trema-модуль), подключаем к Raspberry

Исходники изображение:

Общие сведения:

Trema-модуль I2C LED матрица 8x8 - это модуль с монохромной светодиодной матрицей размерами 8x8 пикселей. Модуль подключается по шине I2С и предназначен для вывода небольших изображений, цифр, символов или бегущей строки. Адрес для шины I2C назначается программно и сохраняется в энергонезависимой памяти модуля, благодаря чему к одной шине I2C можно подключить более 100 модулей (из которых можно создавать составные картинки).

Видео:

Спецификация:

  • Напряжение питания: 5 В (постоянного тока)
  • Потребляемый ток: до 35 мА.
  • Тип матрицы: монохромная.
  • Разрешение матрицы: 8x8.
  • Количество светодиодов: 64.
  • Цвет свечения: красный.
  • Развёртка: задаётся от 10 до 255 кадров/сек (по умолчанию 100).
  • Шаг регулировки яркости: 1/255.
  • Буфер для хранения бегущей строки: до 512 символов.
  • Скорость бегущей строки: задаётся от 0,06 до 15 секунд на символ.
  • Таблица символов: CP866 (поддерживает Кириллицу).
  • Интерфейс: I2C.
  • Скорость шины I2C: 100 кбит/с.
  • Адрес на шине I2C: устанавливается программно (по умолчанию 0x09).
  • Уровень логической 1 на линиях шины I2C: 3,3 В (толерантны к 5 В).
  • Уровень логической 1 на выводах ADR: 3,3 В (толерантны к 5 В).
  • Рабочая температура: от -40 до +65 °C.
  • Габариты: 32x32 мм.
  • Вес: 7 г.

Подключение:

Trema-модуль I2C LED матрица 8x8 подключается к аппаратной или программной шине I2C Raspberry.

В комплекте имеется кабель для быстрого и удобного подключения модуля к колодке I2C на Trema Shield. Если на шине I2C уже имеется другое устройство, то для подключения модуля, предлагаем воспользоваться I2C Hub.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Способ - 1 : Используя провода и Raspberry Pi

В этом случае необходимо питать логическую часть матрицы от 3,3 В Raspberry

Используя провода «Папа — Мама», подключаем напрямую к выводам I2C:

Способ - 2 : Используя проводной шлейф и Trema+Expander Hat

Используя 4-х проводной шлейф, подключаем к Trema+Expander Hat:

Способ - 3 : Используя шлейфы, i2C Hub и Trema+Expander Hat

На заметку: При таком подключении необходимо установить адреса модулей заранее

Используя 4-х проводные шлейфы, i2C Hub, подключаем  несколько модулей к Trema+Expander Hat:

Питание:

Модуль не поддерживает горячее подключение: Подключайте модуль только при отсутствии питания и данных на шине I2C. В противном случае потребуется отключить питание при уже подключённом модуле.

Входное напряжение питания 5 В постоянного тока, подаётся на выводы Vсс и GND модуля.

Модуль сохраняет работоспособность при снижении напряжения питания до 3,3 В, при незначительном снижении яркости светодиодов матрицы.

Подробнее о модуле:

Trema-модуль I2C LED матрица 8x8 построен на базе микроконтроллера STM32F030K6 и снабжен собственным стабилизатором напряжения. Модуль отрисовывает изображение последовательно включая по одному светодиоду матрицы с частотой 100 кадров/сек. При такой частоте глаз не замечает мерцаний светодиодов и видит всё изображение матрицы целиком. В памяти модуля имеется таблица изображений символов в кодировке CP866 (поддерживает Кириллицу). Модуль имеет буфер на 512 символов для хранения текста бегущей строки.

Модуль позволяет:

  • Залить и стереть дисплей матрицы, с возможностью анимации указанных действий.
  • Вывести изображение размером 8x8 из массива размером в 8 байт.
  • Вывести символ по его коду в кодировке CP866 (в т.ч. символ Кириллицы).
  • Записать и вывести текст бегущей строки (до 512 символов) с указанием её скорости.
  • Установить яркость матрицы.
  • Установить частоту обновления экрана от 10 до 255 кадров/сек.
  • Установить угол поворота изображений матрицы на 0°, 90°, 180° и 270°.
  • Включить функцию анимации появления/исчезания изображения, символа или текста.
  • Изменить изображение любого символа, задать ширину и межсимвольные интервалы.
  • Установить текст бегущей строки в указанную позицию и пошагово её сдвигать.
  • Задать направление и режим автопрокрутки бегущей строки.
  • Задать адрес для шины I2C с сохранением в энергонезависимую память модуля.

Для работы с Trema-модулем 2C LED матрица 8x8 предлагаем воспользоваться разработанной нами библиотекой iarduino_I2C_Matrix_8x8, которая позволяет реализовать все функции модуля.

Подробнее про установку библиотеки читайте в нашей инструкции.

Примеры:

Для работы с модулем необходимо включить шину I2C. 

Ссылка на подробное описание как это сделать.

Внимание! Если вы используете версию Buster операционной системы Raspbian на Raspberry Pi, то (на момент написания статьи: октябрь 2019) для корректной работы шины I2C необходимо добавить следующие строки в /boot/config.txt:

core_freq=500

core_freq_min=500

Комментарий разработчиков операционной системы: "Without an explicitcore_freq=500 and core_freq_min=500 the firmware has to choose the divider assuming the higher clock speed to prevent running the bus too fast."

Для подключения библиотеки необходимо сначала её установить. Сделать это можно в менеджере модулей в Thonny Python IDE (тогда библиотека установится локально для этого IDE) или в терминале Raspberry (тогда библиотека будет системной) командой:

sudo pip3 install pyiArduinoI2Cmatrix

Подробнее об установке библиотек можно узнать в этой статье.

Мигание:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
         disp.fillScr()                 # Заливаем экран (включаем  все светодиоды).
         sleep(1)                       #
         disp.clrScr()                  # Чистим экран (выключаем все светодиоды).
         sleep(1)                       #
except:                                 # Если поднято исключение (например,
                                        # выполнение сценария прервано с клавиатуры)
    disp.reset()                        # Сбрасываем все параметры матрицы

Данный пример включает и выключает все светодиоды матрицы. Дисплей светится 1 секунду и потухает на 1 секунду.

Обратите внимание на то, что адрес светодиодной матрицы 0x09 указан при объявлении объекта disp. Если на шине I2C имеется только одна светодиодная матрица, то её адрес можно не указывать (объявить объект disp = pyiArduinoI2Cmatrix() без адреса), тогда библиотека сама определит адрес светодиодной матрицы, даже если на шине есть другие устройства.

Анимация:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        #
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
        disp.fillScr(X8_RIPPLES)        # Заливаем экран рябью (светодиоды включаются хаотично и с задержками).
        sleep(1)                        #
        disp.clrScr (X8_RIPPLES)        # Чистим экран рябью (светодиоды выключаются хаотично и с задержками).
        sleep(1)                        #
        disp.fillScr(X8_DOWN)           # Заливаем экран сверху вниз (светодиоды включаются построчно сверху вниз).
        sleep(1)                        #
        disp.clrScr (X8_DOWN)           # Чистим экран сверху вниз (светодиоды выключаются построчно сверху вниз).
        sleep(1)                        #
        disp.fillScr(X8_TOP)            # Заливаем экран снизу вверх (светодиоды включаются построчно снизу вверх).
        sleep(1)                        #
        disp.clrScr (X8_TOP)            # Чистим экран снизу вверх (светодиоды включаются построчно снизу вверх).
except:                                 # Если поднято исключение (например,
                                        # выполнение сценария прервано с клавиатуры)
    disp.reset()                        # Сбрасываем все параметры матрицы

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

Изменение адреса на шине I2C:

newAddress = 0x09                       # Назначаемый модулю адрес.
                                        #
from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку для работы с LED матрицей 8x8.
disp = pyiArduinoI2Cmatrix()            # Объявляем объект disp для работы с функциями pyiArduinoI2Cmatrix.
                                        # Если при объявлении объекта указать адрес, например, disp(0x0B), то пример будет работать с тем модулем, адрес которого был указан.
if disp.begin() is True:                # Инициируем работу с LED матрицей 8x8.
    print("На шине I2C найден "         #
          "модуль с адресом "           #
          + hex(disp.getAddress())      # Выводим текущий адрес модуля.
          + " который является"         #
          " LED матрицей 8x8")          #
    if disp.changeAddress(              #
            newAddress) is True:        # Меняем адрес модуля на newAddress.
                                        #
        print("Адрес модуля изменён на "#
              + hex(disp.getAddress())) # Выводим текущий адрес модуля.
    else:                               #
        print("Адрес модуля "           #
              "изменить не удалось!")   #
else:                                   #
    print("Модуль LED матрица"          #
          " 8x8 не найден!")            #

Данный пример присвоит светодиодной матрице адрес 100, который будет сохранён в энергонезависимой памяти модуля, а значит останется и после выключения питания.

Обратите внимание на то, что в данном примере (в отличии от всех остальных) объект disp был объявлен без указания изначального адреса светодиодной матрицы, значит этот пример будет работать только когда на шине только одна светодиодная матрица (и Вам не обязательно знать её изначальный адрес). Если на шине несколько светодиодных матриц, то объект disp необходимо объявлять с указанием адреса той матрицы с которой Вы желаете работать.

Вывод цифр:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
        for i in range(10):             #
            disp.print(i)               # Выводим цифру на матрицу
            sleep(1)                    # Ждём секунду
except:                                 # Если поднято исключение (например,
                                        # выполнение сценария прервано с клавиатуры)
    disp.reset()                        # Сбрасываем все параметры матрицы

Данный пример постоянно выводит цифры от 0 до 9 меняя их каждую секунду. Вывод цифр можно анимировать указав название анимации в качестве второго аргумента функции print().

Вывод символов:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
                                        #
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
        disp.print('i')                 # Выводим символ
        sleep(.300)                     #
        disp.print('A')                 # Выводим символ
        sleep(.300)                     #
        disp.print('r')                 # Выводим символ
        sleep(.300)                     #
        disp.print('d')                 # Выводим символ
        sleep(.300)                     #
        disp.print('u')                 # Выводим символ
        sleep(.300)                     #
        disp.print('i')                 # Выводим символ
        sleep(.300)                     #
        disp.print('n')                 # Выводим символ
        sleep(.300)                     #
        disp.print('o')                 # Выводим символ
        sleep(.300)                     #
        disp.print(' ')                 # Выводим символ
        sleep(.500)                     #
except:                                 # Если поднято исключение (например,
                                        # выполнение сценария прервано с клавиатуры)
    disp.reset()                        # Сбрасываем все параметры матрицы

Данный пример постоянно выводит символы слова «iArduino», задерживаясь на каждом символе по 0,3 сек.

Вывод символов с анимацией:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
                                        #
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
        disp.print('i', X8_FILLED_TOP)  # Выводим символ 'i', с анимацией появления
        sleep(.3)                       # снизу-вверх из закрашенного фона.
        disp.print('A')                 # Выводим символ 'A'.
        sleep(.3)                       #
        disp.print('r')                 # Выводим символ 'r'.
        sleep(.3)                       #
        disp.print('d')                 # Выводим символ 'd'.
        sleep(.3)                       #
        disp.print('u')                 # Выводим символ 'u'.
        sleep(.3)                       #
        disp.print('i')                 # Выводим символ 'i'.
        sleep(.3)                       #
        disp.print('n')                 # Выводим символ 'n'.
        sleep(.3)                       #
        disp.print('o')                 # Выводим символ 'o'.
        sleep(.3)                       #
        disp.fillScr(X8_TOP)            # Заливаем дисплей снизу-вверх.
except:                                 # Если поднято исключение (например,
                                        # выполнение сценария прервано с клавиатуры)
    disp.reset()                        # Сбрасываем все параметры матрицы

Данный пример, как и предыдущий, выводит символы слова «iArduiono», но первый символ 'i' выводится с анимацией появления сверху вниз из закрашенного фона, а вместо вывода пробела используется функция заливки дисплея fillScr() с анимацией снизу вверх.

Вывод символов Кириллицы:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
                                        #
disp.setCoding(X8_TXT_UTF8)             # Устанавливаем кодировку UTF-8
                                        #
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
        disp.print("П")                 # Выводим символ 'П'.
        sleep(.3)                       #
        disp.print("р")                 # Выводим символ 'р'.
        sleep(.3)                       #
        disp.print("и")                 # Выводим символ 'и'.
        sleep(.3)                       #
        disp.print("в")                 # Выводим символ 'в'.
        sleep(.3)                       #
        disp.print("е")                 # Выводим символ 'е'.
        sleep(.3)                       #
        disp.print("т")                 # Выводим символ 'т'
        sleep(.3)                       #
        disp.print(" ")                 # Выводим символ пробела.
        sleep(.5)                       #
except:                                 # Если поднято исключение (например,
                                        # выполнение сценария прервано с клавиатуры)
    disp.reset()                        # Сбрасываем все параметры матрицы

Данный пример отличается от предыдущего тем, что в нём однократно вызвана функция автоопределения кодировки скетча CodingDetect("п") позволяющая библиотеке корректно определять символы Кириллицы. Дело в том, что в разных версиях Arduino IDE используется разная кодировка, а так же кодировка сохранённого скетча отличается от кодировки не сохранённого. Еще одним отличием является то, что символы в функции print() указываются в двойных, а не одинарных кавычках, так как если Ваш скетч использует кодировку UTF-8, то один символ Кириллицы занимает два байта строки.

Вывод бегущей строки однократно:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
disp.print("http://iarduino.ru")        # Загружаем текст "http://iarduino.ru" для бегущей строки.
#  Запускаем бегущую строку:            # До этого мы только загрузили текст бегущей строки, но не выводили её!
disp.autoScroll(240)                    # Вывести (прокрутить) бегущую строку однократно со скоростью 240. 
                                        # Скорость указывается от 0 (стоп), до 255 (макс).

Данный пример однократно выводит текст "Hello World" бегущей строкой со скоростью 240. Функция autoScroll() не ждёт завершение прокрутки бегущей строки, так как прокрутка осуществляется модулем не используя ресурсов Arduino.

Вывод бегущей строки постоянно:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.
disp.print("http://iarduino.ru")        # Загружаем текст "http://iarduino.ru" для бегущей строки.
#  Запускаем бегущую строку:            # До этого мы только загрузили текст бегущей строки, но не выводили её!
disp.autoScroll(240, 2000)              # Бегущая строка будет постоянно прокручиваться, 
                                        # выдерживая паузу между прокрутками в 2 секунды.

Данный пример выводит ту же строку что и предыдущий пример, но делает это постоянно с задержкой в 2000 миллисекунд между прокрутками строк. В данном примере, сразу после кода setup начинает выполняться код loop (если бы он там был), так как бегущая строка прокручивается модулем самостоятельно, не используя ресурсов Arduino.

Вывод изображений:

                                        # Создаём изображение "смайлик".
myImage_1 = [ 0b00111100,               #
              0b01000010,               #
              0b10100101,               #
              0b10000001,               #
              0b10100101,               #
              0b10011001,               #
              0b01000010,               #
              0b00111100 ]              #
                                        # Создаём изображение "телевизор".
myImage_2 = [ 0b01000100,               #
              0b00101000,               #
              0b00010000,               #
              0b11111111,               #
              0b10000011,               #
              0b10000011,               #
              0b10000011,               #
              0b11111111 ]              #
from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы с LED матрицей 8x8, указывая её адрес на шине I2C.
                                        #
try:                                    # Входим в блок исключений
    while True:                         # Входим в бесконечный цикл
        disp.drawImage(myImage_1),      # Выводим на дисплей изображение списка myImage_1
        sleep(2)                        # и ждём пару секунд.
        disp.drawImage(myImage_2),      # Выводим на дисплей изображение списка myImage_2
        sleep(2)                        # и ждём пару секунд.
except:                                 # Если поднято исключение (наример, сценарий завершён с клавиатуры
    disp.reset()                        # сбрасываем параметры модуля.

Данный пример поочерёдно выводит изображения «телевизор» и «смайлик».

Изображения могут выводиться с анимацией появления (как символы). Если использовать несколько светодиодных матриц, то на них можно вывести большое изображение, где каждый дисплей будет отображать свою часть изображения.

Вывод бегущей строки на несколько дисплеев:

from pyiArduinoI2Cmatrix import *               # Подключаем библиотеку для работы с LED матрицей 8x8.
from time import sleep                          #
                                                #
displays = []                                   # Создаём пустой список
                                                #
for i in range(9,12):                           # Создаём объекты матриц (от 9 до 11 адреса i2c)
    displays.append(                            #
             pyiArduinoI2Cmatrix(i))            #
                                                #
ticker = ("Интернет магазин iarduino.ru"        # Создаём длинную строку
         " расположен по адресу "               #
         "г.Москва, Леснорядский пер.,"         #
         " 18с2, БЦ \"ДМ-ПРЕСС\".    "          #
         "Мы работаем ПН-ПТ с 12:00 "           #
         "до 18:00 тел:"                        #
         " 8(499)5001456    ")                  #
                                                #
p = 65500                                       # Устанавливаем счётчик 'p' в максимальное значение.
for disp in displays:                           # Обходим все объекты матриц
    disp.bright(255)                            # Устанавливаем максимальную яркость.
    disp.setCoding(X8_TXT_UTF8)                 # Устанавливаем кодировку UTF-8
    disp.print(ticker)                          # Загружаем текст бегущей строки в матрицу.
                                                # Текст только загрузится, но не начнёт выводиться!
try:                                            # Входим в блок исключений
    while True:                                 # Входим в бесконечный цикл
        if (p >=                                # Если строка прокручена полностью
            displays[0].getScroolWidth()        # (количество сдвигов равно или
            + displays[0].getCharIndent()       #  превысило количество пикселей в строке),
            - 8 * len(displays)):               #  то ...
            p = 0                               # Сбрасываем счётчик совершённых сдвигов.
            sleep(1)                            # Ждём 1 сек (задержка на последнем символе строки).
            for disp in displays:               #
                disp.clrScr()                   # Чистим каждую матрицу.
            sleep(1)                            # Ждём 1 сек (пауза между прокрутками бегущих строк).
            for i in range(len(displays)):      #
                displays[i].scrollPos(i * 8)    # Выводим бегущую строку на дисплей в позиции зависящей от положения дисплея.
            sleep(1)                            # Ждём 1 сек (задержка на первом символе строки).
        p += 1                                  # Увеличиваем счётчик совершённых сдвигов на 1 шаг.
        for disp in displays:                   #
                disp.scrollStep()               # Сдвигаем строку каждого дисплея на один шаг.
        sleep(.05)                              # Приостанавливаем выполнение кода, чем больше задержка, тем медленнее скорость бегущей строки.
except KeyboardInterrupt:                       # Если сценарий был прерван с клавиатуры
    for disp in displays:                       #
        disp.reset()                            # Сбрасываем параметры каждой матрицы.

Данный пример выводит бегущую строку «ticker» на несколько дисплеев. Обратите внимание на то, что в примере создаются не несколько объектов библиотеки pyiArduinoI2Cmatrix, а один список объектов «disp», что позволяет легко менять количество дисплеев, просто изменив количество элементов массива. Значения с которыми был определён массив объектов являются адресами дисплеев на шине I2C (в примере это адреса 9, 10 и 11). В коде в каждый дисплей загружается один и тот же текст из строки «ticker». В этом примере нельзя использовать самостоятельную прокрутку функцией autoScroll(), так как она не гарантирует синхронности сдвига бегущих строк на всех дисплеях. По этому в строки всех дисплеев постоянно сдвигаются на 1 шаг функцией scrollStep(). А если бегущая строка прокручена до последнего символа (что определяется условием оператора if), то все дисплеи сначала очищаются функцией clrScr() после чего их строки устанавливаются в начальные позиции сдвига функцией scrollPos() и все повторяется. Меняя значения параметров функций sleep() данного сценария, можно менять скорость прокрутки, паузу между прокрутками, задержку в начале и конце прокрутки бегущей строки.

Описание функций библиотеки:

Для работы с модулем необходимо включить шину I2C. 

Ссылка на подробное описание как это сделать.

Внимание! Если вы используете версию Buster операционной системы Raspbian на Raspberry Pi, то для корректной работы шины I2C необходимо добавить следующие строки в /boot/config.txt:

core_freq=500

core_freq_min=500

Для подключения библиотеки необходимо сначала её установить. Сделать это можно в менеджере модулей в Thonny Python IDE (тогда библиотека установится локально для этого IDE) или в терминале Raspberry (тогда библиотека будет системной) командой:

sudo pip3 install pyiArduinoI2Cmatrix

Подробнее об установке библиотек можно узнать в этой статье.

Подключение библиотеки:

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
disp = pyiArduinoI2Cmatrix(0x09)        # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, указывая её адрес на шине I2C.

Если Вам не известен адрес светодиодной матрицы, то объект disp можно объявить без указания адреса (библиотека сама найдёт адрес светодиодной матрицы), но на шине I2C должна быть только одна светодиодная матрица (при этом допускается что на шине могут быть другие модули):

from pyiArduinoI2Cmatrix import *       # Подключаем библиотеку (модуль python) для работы с LED матрицей 8x8.
from time import sleep                  # Импортируем функцию ожидания
disp = pyiArduinoI2Cmatrix()            # Объявляем объект disp для работы
                                        # с LED матрицей 8x8, адрес которой нам неизвестен.

Функция begin()

  • Назначение: Функция инициирует работу светодиодной матрицы.
  • Синтаксис: begin()
  • Параметры: Нет.
  • Возвращаемые значения:
    • True / False - флаг наличия светодиодной матрицы на шине I2C.
  • Примечание:
    • Автоматически выполняется в конструкторе объекта при его объявлении (для отмены авто инициации передайте в конструктор второй параметр NO_BEGIN или любое число отличное от нуля. Например: disp = pyiArduinoI2Cmatrix(None, NO_BEGIN). Это может пригодится для сокращения времени инициации при работе с большим количеством матриц.
    • Функцию можно использовать для определения наличия светодиодной матрицы.
  • Пример:
disp = pyiArduinoI2Cmatrix(0x09, NO_BEGIN)  # Создаём объект без авто инициации
sleep(.5)
disp.begin()                                # Инициируем работу с матрицей
  • Пример:
if disp.begin() is True:                    #Проверяем наличие модуля
    print("Модуль найден")
else:             
    print("Модуль не найден")

Функция changeAddress()

  • Назначение: Изменение адреса светодиодной матрицы на шине I2C.
  • Синтаксис: changeAddress( АДРЕС )
  • Параметры:
    • АДРЕС - Новый адрес для светодиодной матрицы от 7 до 126 (включительно).
  • Возвращаемые значения:
    • True / False - флаг успешного изменения адреса.
  • Примечание:
    • Новый адрес светодиодной матрицы записывается в её энергонезависимую память, а значит будет сохранён и после выключения питания.
    • Функция ждёт сохранение адреса и проверяет появление устройства с новым адресом на шине I2C, что занимает некоторое время.
    • После смены адреса можно продолжать работать со светодиодной матрицей без объявления нового объекта.
  • Пример:
disp.changeAddress(0x0A)  # Меняем адрес светодиодной матрицы на 10.
  • Пример:
if disp.changeAddress(10) is True:  # Меняем адрес с проверкой.
    print("Адрес изменён")
else:
    print("Адрес не изменён")

Функция reset()

  • Назначение: Перезагрузка светодиодной матрицы.
  • Синтаксис reset()
  • Параметры: Нет.
  • Возвращаемые значения:
    • True / False - флаг успешной перезагрузки светодиодной матрицы.
  • Примечание:
    • Функция ждёт завершение перезагрузки, что может занять некоторое время.
    • Изображения символов, изображение матрицы, ширина символов, межсимвольный интервал, яркость, поворот, частота кадров, текст бегущей строки и т.д. будут установлены в значения по умолчанию (как при отключении и включении питания).
  • Пример:
disp.reset()  # Перезагружаем светодиодную матрицу.

Функция getAddress()

  • Назначение: Получение текущего адреса светодиодной матрицы на шине I2C.
  • Синтаксис: getAddress()
  • Параметры: Нет.
  • Возвращаемые значения:
    • АДРЕС на шине I2C.
  • Примечание:
    • Функция может быть полезна когда адрес светодиодной матрицы Вам неизвестен, но был определён библиотекой.
  • Пример:
address = disp.getAddress()  # Получить текущий адрес светодиодной матрицы на шине I2C.

Функция getVersion()

  • Назначение: Получение версии прошивки модуля.
  • Синтаксис: getVersion()
  • Параметры: Нет.
  • Возвращаемые значения:
    • ВЕРСИЯ прошивки модуля.
  • Примечание:
    • Чем выше версия тем она поддерживает большее число анимации и имеет незначительные доработки, но все функции описанные на данной странице работают с любой версией прошивки.
  • Пример:
ver = disp.getVersion()  # Получить версию прошивки модуля.

Функция getCoding()

  • Назначение: Получение текущей кодировки используемой библиотекой.
  • Синтаксис: getCoding()
  • Параметры: Нет.
  • Возвращаемые значения:
    • КОДИРОВКА представленная одним из значений:
      • X8_TXT_CP866 - библиотека сейчас использует кодировку CP-866.
      • X8_TXT_UTF8 - библиотека сейчас использует кодировку UTF-8.
      • X8_TXT_WIN1251 - библиотека сейчас использует кодировку Windows-1251.
  • Примечание:
    • Используемая библиотекой кодировка должна совпадать с кодировкой источника символов и текста выводимых на дисплей.
    • Если выводятся символы и текст только Латиницы, то кодировка не имеет значения.
  • Пример:
coding = disp.getCoding()
if coding == X8_TXT_CP866:   # В зависимости от используемой кодировки далее выводится текст ...
    print("CP-866")
elif coding == X8_TXT_UTF:
    print("UTF-8")
elif coding == X8_TXT_WIN1251:
    print("WIN-1251")

Функция setCoding()

  • Назначение: Установка кодировки для библиотеки.
  • Синтаксис: setCoding( КОДИРОВКА )
  • Параметры:
    • КОДИРОВКА представленная одним из значений:
      • X8_TXT_CP866 - требуется использовать кодировку CP-866.
      • X8_TXT_UTF8 - требуется использовать кодировку UTF-8.
      • X8_TXT_WIN1251 - требуется использовать кодировку Windows-1251.
  • Возвращаемые значения: Нет.
  • Примечание:
    • Функция нужна только если на дисплей выводятся текст или символы Кириллицы.
    • Указываемая кодировка должна совпадать с кодировкой источника символов и текста выводимых на дисплей.
    • Если выводятся символы и текст только Латиницы, то кодировку можно не задавать.
    • Если Вы не знаете в какой кодировке написан сценарий, то используйте функцию автоопределения кодировкиCodingDetect("п").
  • Пример:
disp.setCoding(X8_TXT_UTF8)  # Указать библиотеке использовать кодировку UTF-8.

Функция codingDetect()

  • Назначение: Автоопределение кодировки скетча для библиотеки.
  • Синтаксис: codingDetect( "п" );
  • Параметры:
    • "п" - символ "п" в двойных кавычках.
  • Возвращаемые значения: Нет.
  • Примечание:
    • Функция работает как setCoding() с точно указанной кодировкой скетча.
    • После того как кодировка определена, её можно узнать функцией getCoding().
  • Пример:
disp.codingDetect("п")  # Определить кодировку скетча и использовать её в библиотеке.

Функция clrScr()

  • Назначение: Очистка экрана светодиодной матрицы.
  • Синтаксис: clrScr( [АНИМАЦИЯ] );
  • Параметры:
    • АНИМАЦИЯ очистки дисплея, представлена одним из значений:
      • X8_RIPPLES - анимация ряби (хаотичное выключение светодиодов).
      • X8_DOWN - анимация сверху вниз (построчное выключение светодиодов).
      • X8_TOP - анимация снизу вверх (построчное выключение светодиодов).
  • Возвращаемые значения: Нет.
  • Примечание:
    • Если функция вызвана без параметра, то экран очищается сразу.
    • Функция ждёт пока дисплей не будет очищен, что занимает некоторое время.
  • Пример:
disp.clrScr(X8_TOP)  # Очистить эран дисплея построчно снизу вверх.
disp.clrScr()        # Очистить эран дисплея сразу.

Функция fillScr()

  • Назначение: Заливка экрана светодиодной матрицы.
  • Синтаксис: fillScr( [АНИМАЦИЯ] );
  • Параметры:
    • АНИМАЦИЯ заливки дисплея, представлена одним из значений:
      • X8_RIPPLES - анимация ряби (хаотичное включение светодиодов).
      • X8_DOWN - анимация сверху вниз (построчное включение светодиодов).
      • X8_TOP - анимация снизу вверх (построчное включение светодиодов).
  • Возвращаемые значения: Нет.
  • Примечание:
    • Если функция вызвана без параметра, то экран заливается сразу.
    • Функция ждёт пока дисплей не будет залит, что занимает некоторое время.
  • Пример:
disp.fillScr(X8_TOP)  # Залить эран дисплея построчно снизу вверх.
disp.fillScr()        # Залить эран дисплея сразу.

Функция invScr()

  • Назначение: Инверсия текущего изображения светодиодной матрицы.
  • Синтаксис: invScr();
  • Параметры: Нет.
  • Возвращаемые значения: Нет.
  • Примечание:
    • Функция включает все светодиоды которые были выключены и выключает те что были включены.
    • Функция инвертирует только текущее изображение светодиодной матрицы.
  • Пример:
disp.invScr()  # Поменять включённые и выключенные светодиоды местами.

Функция drawImage()

  • Назначение: Вывод изображения на экран светодиодной матрицы.
  • Синтаксис: drawImage( СПИСОК , [ АНИМАЦИЯ ] );
  • Параметры:
    • СПИСОК из 8 элементов с данными выводимого изображения.
    • АНИМАЦИЯ появления изображения на экране светодиодной матрицы:
      • X8_EMPTY_RIPPLES - появление рябью из пустого фона.
      • X8_FILLED_RIPPLES - появление рябью из закрашенного фона.
      • X8_EMPTY_DOWN - появление сверху вниз из пустого фона.
      • X8_FILLED_DOWN - появление сверху вниз из закрашенного фона.
      • X8_EMPTY_TOP - появление снизу вверх из пустого фона.
      • X8_FILLED_TOP - появление снизу вверх из закрашенного фона.
  • Возвращаемые значения: Нет.
  • Примечание:
    • Если анимация не указана, то изображение появляется сразу.
    • Если тип памяти не указан, то считается что массив находится в ОЗУ.
    • Массив указывается первым параметром, а тип памяти и анимация могут быть указаны в любом порядке после массива.
    • Функция ждёт завершение анимации (если она указана), что занимает некоторое время.
  • Пример:
myImage = [ 0b00111100,                    #    ####
            0b01000010,                    #   #    #
            0b10100101,                    #  # #  # #
            0b10000001,                    #  #      #
            0b10100101,                    #  # #  # #
            0b10011001,                    #  #  ##  #
            0b01000010,                    #   #    #
            0b00111100 ]                   #    ####
                                           #
disp.drawImage(myImage, X8_EMPTY_TOP)      # Вывести изображение из myImage с анимацией
disp.drawImage(myImage)                    # Вывести изображение myImage без анимации.

    Функция getImage()

    • Назначение: Получение изображения из экрана матрицы в массив.
    • Синтаксис: СПИСОК = getImage();
    • Параметры:
      • нет
    • Возвращаемые значения: СПИСОК - в который требуется сохранить изображение с экрана матрицы.
    • Примечание:
      • Действия данной функции противоположны функции drawImage().
    • Пример:
    image = disp.getImage()  # Сохраняем изображение с экрана светодиодной матрицы в image.

    Функция print()

    • Назначение: Вывод числа, символа или загрузка текста.
    • Синтаксис: print( ДАННЫЕ [, АНИМАЦИЯ] );
    • Параметры:
      • ДАННЫЕ - цифра, символ или текст.
      • АНИМАЦИЯ появления данных на экране светодиодной матрицы:
        • X8_EMPTY_RIPPLES - появление рябью из пустого фона.
        • X8_FILLED_RIPPLES - появление рябью из закрашенного фона.
        • X8_EMPTY_DOWN - появление сверху вниз из пустого фона.
        • X8_FILLED_DOWN - появление сверху вниз из закрашенного фона
        • X8_EMPTY_TOP - появление снизу вверх из пустого фона
        • X8_FILLED_TOP - появление снизу вверх из закрашенного фона
    • Возвращаемые значения: Нет.
    • Примечание:
      • Если указан символ или цифра, то функция выведет её на экран светодиодной матрицы.
      • Если указан текст, то функция лишь сохранит его в модуль, а для вывода текста необходимо запустить бегущую строку функцией autoScroll() или сдвинуть строку функцией scrollPos(), или scrollStep().
      • Функция ждёт завершение анимации (если она указана), что занимает некоторое время
    • Пример:
    disp.print(5)        # Вывести на экран цифру 5.
    disp.print('F')      # Вывести на экран символ 'F'.
    disp.print("F")      # Вывести на экран символ "F".
    disp.print("Hello")  # Сохранить текст для бегущей строки.

    Функция autoScroll()

    • Назначение: Автопрокрутка бегущей строки.
    • Синтаксис: autoScroll( СКОРОСТЬ [, ПАУЗА] );
    • Параметры:
      • СКОРОСТЬ прокрутки бегущей строки. Указывается числом от 1 (минимальная) до 255 (максимальная). Если указать 0 то бегущая строка остановится.
      • ПАУЗА между прокрутками бегущих строк в миллисекундах. Указывается числом от 100 (0,1 сек) до 25500 (25,5 сек). Если указать 0 или не указывать паузу, то бегущая строка будет прокручена однократно (без повторов).
    • Возвращаемые значения: Нет.
    • Примечание:
      • От скорости прокрутки бегущей строки зависит задержка между сдвигом бегущей строки на 1 шаг, она равна (256 - СКОРОСТЬ) / 100 секунд.
      • Указанное значение паузы между прокрутками бегущих строк округляется в меньшую сторону до десятых долей секунд (пример, 230 мс = 0,2 сек).
    • Пример:
    disp.autoScroll(200)        # Прокрутить бегущую строку однократно со скоростью 200.
    disp.autoScroll(250, 1000)  # Прокручивать бегущую строку постоянно со скоростью 250 и паузой между прокрутками бегущих строк в 1000 мс (1 сек).

    Функция scrollPos()

    • Назначение: Установка позиции с которой требуется вывести строку на экран.
    • Синтаксис: scrollPos( ПОЗИЦИЯ );
    • Параметры:
      • ПОЗИЦИЯ с которой требуется вывести строку на экран. Указывается числом от 0 до 65535.
    • Возвращаемые значения: Нет.
    • Примечание:
      • Позиция это номер пикселя или символа строки от её начала или конца, зависит от значений указанных функциями scrollDir() и scrollMod(). По умолчанию позиция определяет номер пикселя от начала строки.
      • Если текст строки был загружен, но строка ещё не выведена на экран, то строка появится на экране начиная с указанной позиции без автопрокрутки.
      • Если строка выводилась автопрокруткой, то строка продолжит прокручиваться начиная с указанной позиции.
    • Пример:
    disp.scrollPos(10)  # Вывести на экран строку с позиции 10 (с позиции 10 шага сдвига строки).

    Функция scrollDir()

    • Назначение: Установка направления сдвига бегущей строки.
    • Синтаксис: scrollDir( ФЛАГ );
    • Параметры:
      • True / False - флаг обратного направления сдвига бегущей строки.
    • Возвращаемые значения: Нет.
    • Примечание:
      • Если вызвать функцию с параметром true, то позиция будет отсчитываться от конца строки, а её сдвиг будет осуществляться от последнего символа к первому.
      • По умолчанию (если не вызывать функцию) используется прямое направление сдвига.
      • Указанное направление не сохраняется после отключения питания.
    • Пример:
    disp.scrollDir(False)  # Сдвигать строку в прямом направлении (от первого символа к последнему).
    disp.scrollDir(True)   # Сдвигать строку в обратном направлении (от последнего символа к первому).

    Функция scrollMod()

    • Назначение: Установка режима сдвига бегущей строки.
    • Синтаксис: scrollMod( ФЛАГ )
    • Параметры:
      • true / false - флаг посимвольного сдвига бегущей строки.
    • Возвращаемые значения: Нет.
    • Примечание:
      • Если вызвать функцию с параметром true, то за один шаг строка будет сдвигаться не на 1 пиксель, а на один символ.
      • По умолчанию (если не вызывать функцию) используется попиксельный режим сдвига.
      • В режиме посимвольного сдвига на экране будет отображаться только один символ из заданной позиции строки (части рядом стоящих символов отображаться не будут).
      • Указанный режим не сохраняется после отключения питания.
    • Пример:
    disp.scrollMod(False)  # Использовать попиксельный режим сдвига бегущей строки (строка прокручивается влево или вправо).
    disp.scrollMod(True)   # Использовать посимвольный режим сдвига бегущей строки (все символы строки выводятся в одно и то же место на экране).

    Функция scrollStep()

    • Назначение: Сдвиг бегущей строки на один шаг.
    • Синтаксис: scrollStep()
    • Параметры: Нет.
    • Возвращаемые значения: Нет.
    • Примечание:
      • Каждый вызов данной функции увеличивает позицию сдвига строки на один шаг и выводит её на экран светодиодной матрицы, как scrollPos( ПОЗИЦИЯ += 1 ).
      • Позиция увеличивается до значения 65535 после чего произойдёт сброс.
    • Пример:
    disp.scrollStep()  # Увеличить позицию сдвига строки на 1 шаг и вывести её на экран светодиодной матрицы.

    Функция setTimeIdleFirst()

    • Назначение: Время простоя на первом символе при автопрокрутке бегущей строки.
    • Синтаксис: setTimeIdleFirst( ВРЕМЯ )
    • Параметры:
      • uint16_t ВРЕМЯ простоя на первом символе в миллисекундах. Указывается числом от 0 до 2550 (2,55 сек).
    • Возвращаемые значения: Нет.
    • Примечание:
      • Указанное значение времени округляется в меньшую сторону до сотых долей секунд (пример, 1234 мс = 1,23 сек).
      • При автопрокрутке бегущей строки время простоя на первом и последнем символе отличается от задержки между остальными шагами прокрутки. По умолчанию первый и последний символ текста бегущей строки отображается по секунде. Данная функция позволяет изменить время отображения первого символа.
      • Указанное значение не сохраняется после отключения питания.
    • Пример:
    disp.setTimeIdleFirst(1500)  # Задержаться на первом символе текста в течении 1,5 сек.

    Функция setTimeIdleLast()

    • Назначение: Время простоя на последнем символе при автопрокрутке бегущей строки.
    • Синтаксис: setTimeIdleLast( ВРЕМЯ )
    • Параметры:
      • ВРЕМЯ простоя на последнем символе в миллисекундах. Указывается числом от 0 до 2550 (2,55 сек).
    • Возвращаемые значения: Нет.
    • Примечание:
      • Указанное значение времени округляется в меньшую сторону до сотых долей секунд (пример, 1234 мс = 1,23 сек).
      • При автопрокрутке бегущей строки время простоя на первом и последнем символе отличается от задержки между остальными шагами прокрутки. По умолчанию первый и последний символ текста бегущей строки отображается по секунде. Данная функция позволяет изменить время отображения последнего символа.
      • Указанное значение не сохраняется после отключения питания.
    • Пример:
    disp.setTimeIdleLast(1500)  # Задержаться на последнем символе текста в течении 1,5 сек.

    Функция getScroolLen()

    • Назначение: Получение количества символов бегущей строки загруженных в модуль.
    • Синтаксис: getScroolLen()
    • Параметры: Нет.
    • Возвращаемые значения:
      • КОЛИЧЕСТВО символов в бегущей строке загруженной в модуль.
    • Примечание:
      • Функция возвращает количество символов загруженных в матрицу, а не количество байт занимаемое бегущей строкой. Например если в модуль загружена строка "Привет", то функция вернёт 6 вне зависимости от кодировки скетча.
    • Пример:
    i = disp.getScroolLen()  # Определить количество символов бегущей строки загруженных в модуль.

    Функция getScroolWidth();

    • Назначение: Получение ширины бегущей строки в пикселях.
    • Синтаксис: getScroolWidth();
    • Параметры: Нет.
    • Возвращаемые значения:
      • КОЛИЧЕСТВО пикселей в бегущей строке загруженной в модуль.
    • Примечание:
      • Функция может понадобиться если используется пошаговый сдвиг бегущей строки с помощью scrollStep().
    • Пример:
    i = disp.getScroolWidth()  # Определить количество пикселей в которое умещается вся бегущая строка.

    Функция angle();

    • Назначение: Изменение угла поворота экрана светодиодной матрицы.
    • Синтаксис: angle( УГОЛ );
    • Параметры:
      • УГОЛ поворота дисплея в градусах. Допускаются значения 0, 90, 180, 270.
    • Возвращаемые значения: Нет.
    • Примечание:
      • Текущее изображение экрана, а так же вновь выводимые данные будут повернуты на указанный угол.
      • Указанный угол не сохраняется после отключения питания.
    • Пример:
    disp.angle(90)  # Повернуть экран на 90°.

    Функция fps()

    • Назначение: Установка частоты обновления экрана светодиодной матрицы.
    • Синтаксис: fps( ЧАСТОТА )
    • Параметры:
      • ЧАСТОТА обновления экрана в fps (кадры в секунду). Указывается числом от 0 до 255.
    • Возвращаемые значения: Нет.
    • Примечание:
      • По умолчанию используется частота 100 кадров в секунду.
      • При частоте ниже 50 кадров в секунду будет заметно мерцание изображения.
      • Изменение частоты обновления экрана может быть полезно при съемке показаний светодиодной матрицы на камеру.
      • Указанная частота не сохраняется после отключения питания.
    • Пример:
    disp.fps(60)  # Установить частоту обновления экрана в 60 кадров в секунду.

    Функция bright()

    • Назначение: Установка яркости экрана светодиодной матрицы.
    • Синтаксис: bright( ЯРКОСТЬ )
    • Параметры:
      • ЯРКОСТЬ свечения светодиодной матрицы. Указывается числом от 1 (минимальная) до 255 (максимальная). Если указать 0, то все светодиоды будут постоянно выключены.
    • Возвращаемые значения: Нет.
    • Примечание:
      • Установленная яркость не сохраняется после отключения питания.
      • По умолчанию используется яркость 192 (75%).
    • Пример:
    disp.bright(255)  # Установить максимальную яркость экрана светодиодной матрицы.

    Функция changeChar()

    • Назначение: Изменение изображения символа.
    • Синтаксис: changeChar( КОД )
    • Параметры:
      • КОД символа в таблице CP-866, изображение которого требуется изменить. Код символа указывается числом от 1 до 255.
    • Возвращаемые значения:
      • ШИРИНА изображений символов в пикселях (колонках).
    • Примечание:
      • В качестве нового изображения символа берётся то, что на момент вызова функции находится на экране светодиодной матрицы.
      • По умолчанию ширина символа равна 5 пикселям (колонкам), а изображение для символа берётся с отступом на 2 пикселя (колонки) от левого края экрана. Ширину символа и отступ можно изменить функциями setCharWidth() и setCharIndent().
      • Функция ждёт пока изображение символа не сохранится, что занимает некоторое время.
      • Символ код которого был указан будет отображаться на экране по новому.
      • Все изменения сбрасываются после отключения питания.
    • Пример:
    # Создаём новое изображение для символа 'Б':   ________
    myImage = [ 0b00000000,                    #  |        |
                0b00111100,                    #  |  ####  |
                0b00100000,                    #  |  #     |
                0b00100000,                    #  |  #     |
                0b00111100,                    #  |  ####  |
                0b00100010,                    #  |  #   # |
                0b00100010,                    #  |  #   # |
                0b00111100 ]                   #  |  ####  |
    #  Выводим изображение и сохраняем его     #   --------
    disp.drawImage(myImage)                    # Выводим изображение на экран светодиодной матрицы.
    disp.changeChar(129)                       # Меняем изображение символа 'Б' (в таблице CP-866 символ 'Б' имеет код 129).
    # Теперь символ 'Б' как в тексте бегущей строки, так и отдельно, будет отображаться так, как мы его нарисовали.
    # Так можно изменить хоть все 255 символов в памяти модуля, но все изменения сбросятся при отключении питания.

    Функция setCharWidth()

    • Назначение: Изменение ширины изображений всех символов.
    • Синтаксис: setCharWidth( ШИРИНА )
    • Параметры:
      • ШИРИНА символов в пикселях (колонках). Указывается от 3 до 7 (включительно).
    • Возвращаемые значения: Нет.
    • Примечание:
      • По умолчанию все символы имеют ширину 5 пикселей (колонок).
      • После смены ширины символов их изображения исказятся (станут нечитаемыми), а значит изображения всех символов потребуется ввести заново функцией changeChar().
      • Установленная ширина не сохраняется после отключения питания.
    • Пример:
    disp.setCharWidth(7)  # Установить ширину для всех символов в 7 пикселей (колонок).

    Функция getCharWidth()

    • Назначение: Получение ширины символов.
    • Синтаксис: getCharWidth()
    • Параметры: Нет.
    • Возвращаемые значения:
      • uint8_t ШИРИНА изображений символов в пикселях (колонках).
    • Примечание:
      • По умолчанию все символы имеют ширину 5 пикселей (колонок).
      • Зная ширину символов, количество символов в тексте бегущей строки, межсимвольный интервал и скорость бегущей строки, можно приблизительно рассчитать время затрачиваемое на автопрокрутку всей бегущей строки.
    • Пример:
    i = disp.getCharWidth()  # Получить ширину изображений символов.

    Функция setCharInterval()

    • Назначение: Изменение межсимвольного интервала.
    • Синтаксис: setCharInterval( ИНТЕРВАЛ )
    • Параметры:
      • ИНТЕРВАЛ между символами в тексте бегущей строки. Указывается от 0 до 255.
    • Возвращаемые значения: Нет.
    • Примечание:
      • По умолчанию используется интервал между символами в 1 пиксель (колонку).
      • Увеличение интервала не влияет на изображения символов.
      • Установленный интервал не сохраняется после отключения питания.
    • Пример:
    disp.setCharInterval(3)  # Установить межсимвольный интервал в 3 пикселя (колонки).

    Функция getCharInterval()

    • Назначение: Получение межсимвольного интервала.
    • Синтаксис: getCharInterval()
    • Параметры: Нет.
    • Возвращаемые значения:
      • ИНТЕРВАЛ между символами в тексте бегущей строки.
    • Примечание:
      • По умолчанию используется интервал между символами в 1 пиксель (колонку).
      • Зная межсимвольный интервал, ширину символов, количество символов в тексте бегущей строки и скорость бегущей строки, можно приблизительно рассчитать время затрачиваемое на автопрокрутку всей бегущей строки.
    • Пример:
    i = disp.getCharInterval()  # Получить межсимвольный интервал.

    Функция setCharIndent()

    • Назначение: Изменение отступа от левого края экрана до символа.
    • Синтаксис: setCharIndent( ОТСТУП )
    • Параметры:
      • ОТСТУП от левого края экрана до символа в пикселях (колонках). Указывается от 0 до 5 (включительно).
    • Возвращаемые значения: Нет.
    • Примечание:
      • По умолчанию используется отступ в 2 пикселя (колонки) от левого края экрана.
      • Отступ используется для вывода одиночного символа, для вывода первого символа текста бегущей строки в позиции 0 и при чтении изображения с экрана светодиодной матрицы для замены им изображения символа.
      • Отступ + ширина символа не могут превышать ширину матрицы (8 пикселей).
      • Установленный отступ не сохраняется после отключения питания.
    • Пример:
    disp.setCharIndent(1)  # Установить отступ в 1 пиксель (колонку).

    Функция getCharIndent()

    • Назначение: Получение отступа от левого края экрана до символа.
    • Синтаксис: getCharIndent()
    • Параметры: Нет.
    • Возвращаемые значения:
      • ОТСТУП от левого края экрана до символа в пикселях (колонках)
    • Примечание:
      • По умолчанию используется отступ в 2 пикселя (колонки).
      • Зная отступ можно с какого места экрана будут отрисовываться символы.
    • Пример:
    i = disp.getCharIndent()  # Получить отступ от левого края экрана до символа.

    Применение:

    Trema-модуль I2C LED матрица 8x8 можно использовать в любых проектах где требуется вывод данных на монохромный дисплей размером 8x8 пикселей. В качестве данных для вывода могут использоваться изображения, символы или бегущая строка.

    Совместив несколько модулей можно выводить более крупные изображения, или пошагово выводить текст бегущей строки на модули составленные в одну линию.

    Ссылки:

    Обсуждение