Архив по меткам :

Adafruit-GFX QR-code

ССЫЛКИ

Свежие комментарии

Дек 23

Микроконтроллеры это просто. LED матрицы. MD_Parola — бегущая строка с русским шрифтом за 20 строк кода.

Есть много библиотек для работы с светодиодными матрицами, но пожалуй такого разнообразия функционала как у библиотек MD_MAX72XX , MD_Parola и MD_MAXPanel нет ни у кого, кроме того данные библиотеки поддерживают не только Amtel микроконтроллеры но и STM32 и ESP8266.

Я буду рассматривать только библиотеку  MD_Parola, поскольку с её помощью можно реализовать в том числе и то, что реализует библиотека MD_MAX72XX. Библиотеку MD_MAXPanel в следующих статьях.

В любом скетче должны присутствовать обязательно 2 функции: setup() и loop(), setup() вызывается один раз при старте программы, loop() это основной цикл программы. Вначале скетча подключаем библиотеки и определяем переменные.

Для работы подключаем библиотеку SPI и соответствующую библиотеку

далее задаем параметры матриц (количество, расположение), для использования скетча в разном оборудовании (Arduino xxx, STM32, ESP8266) надо только изменить параметр CS_PIN

задаем переменную (P) для MD_Parola

для вывода данных на матрицу мы будем использовать переменную P, делаем инициализацию матрицы и задаем параметры

и в основном цикле выводим текст

разберем строку параметров выводимого текста, она имеет следующие параметры.

P.displayText(Текст, позиция , скорость, пауза, эффект появления, эффект исчезновения);

Текст — выводимый текст

позиция — выравнивание текста

spoiler
PA_LEFT — Крайний левый столбец для первого символа будет слева от дисплея.
PA_CENTER — Текст будет размещен с одинаковым количеством пустых столбцов с обеих сторон.
PA_RIGHT — Самый правый столбец последнего символа будет находиться на правой стороне дисплея.

скорость — в миллисекундах (1 сек = 1000 миллисекунд) скорость анимации при появлении/исчезновении, промежуток времени между сдвигом на 1 пиксель.

пауза — пауза после исчезновения

эффект появления, эффект исчезновения — эффект появления и исчезновения текста

spoiler
PA_NO_EFFECT — Используется как заполнитель места, не выполняет никаких операций.
PA_PRINT — Текст только появляется (печатается)
PA_SCROLL_UP — Текст прокручивается вверх по дисплею.
PA_SCROLL_DOWN — Текст прокручивается вниз по дисплею.
PA_SCROLL_LEFT — Текст прокручивается справа налево на дисплее.
PA_SCROLL_RIGHT — Прокрутка текста слева направо на дисплее.
PA_SPRITE — Текст входит и выходит, используя пользовательский спрайт.
PA_SLICE — Текст входит и выходит из фрагмента (столбца) одновременно справа.
PA_MESH — Текст входит и выходит в столбцах, перемещаясь в альтернативном направлении (U / D)
PA_FADE  — Текст входит и выходит, постепенно уменьшаясь от / до 0 и устанавливая интенсивность.
PA_DISSOLVE — Текст растворяется от одного дисплея к другому.
PA_BLINDS — Текст заменяется за вертикальными жалюзи.
PA_RANDOM — Текст входит и выходит как случайные точки.
PA_WIPE — Текст появляется / исчезает по одному столбцу за раз, выглядит так, будто он стирается и выключается.
PA_WIPE_CURSOR — Протрите светлой полосой перед изменением.
PA_SCAN_HORIZ — Сканируйте светодиодную колонку по одному, затем появляются / исчезают в конце.
PA_SCAN_HORIZX — Сканируйте пустой столбец по тексту по одному столбцу за раз, затем появляются / исчезают в конце.
PA_SCAN_VERT — Сканируйте светодиодный ряд по одному, затем появляются / исчезают в конце.
PA_SCAN_VERTX — Просканируйте пустую строку по тексту по одной строке за раз, затем появляются / исчезают в конце.
PA_OPENING — Появляются и исчезают из центра дисплея по направлению к концам.
PA_OPENING_CURSOR — ОТКРЫТИЕ с легкими барами перед изменением.
PA_CLOSING — Появляются и исчезают с концов дисплея по направлению к середине.
PA_CLOSING_CURSOR — ЗАКРЫТИЕ с легкими барами перед изменением.
PA_SCROLL_UP_LEFT — Текст перемещается по диагонали вверх и влево (северо-восток)
PA_SCROLL_UP_RIGHT — Текст перемещается по диагонали вверх и вправо (северо-запад)
PA_SCROLL_DOWN_LEFT — Текст перемещается по диагонали вниз и влево (юго-восток)
PA_SCROLL_DOWN_RIGHT — Текст перемещается по диагонали вниз и вправо (северо-запад)
PA_GROW_UP — Текст растет снизу вверх и уменьшается сверху вниз.
PA_GROW_DOWN — Текст растет сверху вниз и сжимается снизу вверх.

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

в примере код

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

Если мы добавим анимацию появления, то текст будет появляться с анимацией, например

выведет текст справа налево, скорость перемещения 0,1 сек/пиксель, после того как текст дойдет до левого края он остановиться. если мы добавим анимацию исчезновения PA_SCROLL_LEFT то текст не останавливаясь уйдет влево.

чтобы получить циклический скроллинг текста надо сбрасывать параметры командой P.displayReset(), вызывать эту функцию надо после того как анимация будет закончена, об этом функция displayAnimate() сообщает переходом в значение TRUE, по этому анимацию текста сделаем вставив следующий код в функцию loop()

мы получим цикличность выполнения анимации текста.

Для вывода текста в зоны необходимо использовать функцию displayZoneText () все параметры аналогичны функции displayText () за исключением номера зоны.

P.displayZoneText (Номер зоны,Текст, позиция , скорость, пауза, эффект появления, эффект исчезновения);

Вызов данной функции будет выводить текст в указанную зону.

Русский текст и UTF-8 символы.

Как я уже писал в начале есть множество библиотек для вывода текста на матрицы, но часть из них не поддерживает русский текст и символы UTF-8 и/или не работает на STM32, esp8266

Для использования кодировки UTF-8 в которой кодируются русские символы в библиотеке предусмотрено использование внешних шрифтов.

Скачиваем шрифты, например отсюда, файл шрифтов поместим в папку со скетчем и вначале скетча подключим это файл в наш проект после подключения библиотек

можно подключить сразу несколько шрифтов. Далее чтобы использовать подключенный шрифт надо указать какой шрифт используем применив функцию getFont (), посмотреть название шрифта можно в подключенной файле, открываем файл любым текстовым редактором и смотрим название переменной

в данном случае _5bite_rus и есть наше название шрифта.

теперь указываем название шрифта функцией setFont() перед выводом текста

однако если текст написан в кодировке UTF-8 то кроме символов текста вы увидите перед каждым символом лишние не понятные символы, это символ старшего байта символа, чтобы этого избежать есть 2 варианта, первый это использование функции перекодировки или использование шрифта в котором нет символов с кодом, равным старшему биту. В русском шрифте старший бит равен 208 или 209 и по этому в моем шрифте эти символы отсутствуют. Без использования функции перекодировки придется пожертвовать буквой «Ё» и «ё» поскольку младшие байты этих символов совпадают с младшими байтами других символов.

полностью скетч выглядит так:

Шрифты можно делать свои используя мой шаблон в LibreOffice или шаблон разработчиков в Microsoft Excel, как использовать шаблон для создания шрифтов в одной из следующих статей.

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс
Синдикация

Понравилась статья? Подпишитесь на RSS .

комментарии отключены, по вопросам в почту или вконтакте http://vk.com/kusheev