Приветствую Вас, Гость! Регистрация

Персональный сайт Пьяных А.В.

Четверг, 25.04.2024


Главная » Статьи » Электроника » Arduino и т.п.

Arduino и светодиодные матрицы 8х8 MAX7219
LED модуль 8х8 точек на MAX7219

   Сегодня на повестке дня вывод информации на кластер матричных светодиодных панелей разрешением 8х8 точек на микросхемах MAX7219. Опишу подключение к Arduino и использование двух наиболее популярных библиотек MAX72xx Panel от Марка Райса и Parola от MajicDesigns. Рассмотрю вывод кириллических и создание пользовательских символов.

    Наконец доехали из поднебесной матричные модули. Каждый модуль состоит из микросхемы MAX7219 (здесь я уже описывал эту микросхему), светодиодной матрицы, в обвязке стоят один конденсатор и один резистор.

Матричный модуль с MAX7219

    Управляется MAX7219 по интерфейсу SPI.

Подключение матричного модуля

   Микросхемы в кластере соединены последовательно. Читал в интернете, что максимально возможное последовательное подключение допускает всего 8 штук MAX7219. Не верьте. 16 модулей соединил, и все прекрасно работает.

   Модули, представленные на Али, бывают в нескольких вариантах исполнения. Наибольшей популярностью пользуются 2 вида: с микросхемой в DIP и в SOIC корпусах. Модуль с DIP-микросхемой большего размера и не так удобен при соединении в кластер. Соединять придется кучей проводов.

Соединение матричных модулей с МС в DIP корпусах

   Модули с микросхемой в SOIC-корпусе имеют размер светодиодной матрицы и соединяются пайкой или джамперами. Получается красиво и аккуратно.

Соединение матричных модулей с МС в SOIC корпусе

   Наиболее известными библиотеками для работы с матрицами и кластерами  являются MAX72xx Panel от Марка Райса и Parola от MajicDesigns: первая библиотека проще в использовании, вторая посложнее с бОльшими возможностями. Распишу подробнее.

MAX72xx Panel

   При использовании MAX72xx Panel обязательна установка библиотеки Adafruit GFX.

   Для русификации текста необходимо будет скачать ЭТОТ ФАЙЛ и заменить стандартный  файл glcdfont.c в каталоге Arduino/Libraries/Adafruit-GFX-Library-master. Также в этом файле описаны, кроме нужных букв и цифр, куча всяких символов. Далеко не все они могут пригодиться. Картинка ниже поясняет как формируются символы.

Формирование символа

   При необходимости Вы можете создать свои символы и заменить ими любые неиспользуемые в файле. Практически все точечные  шрифты, используемые в различных библиотеках, сформированы подобным образом.

   Итак, библиотеки MAX72xx Panel и Adafruit GFX установлены, файл glcdfont.c заменен. Запускаем Arduino IDE, открываем ФАЙЛ. В скетче есть функция utf8rus. Она обеспечивает перекодировку таблицы символов для русского языка. Она нужна только для нормального вывода из программы, то есть в программе нужный текст пишется на русском. Если текст вводится через СОМ-порт, то коррекция кодов символа происходит в функции Serial_Read. В IDE и в консоли разработчики использовали разные кодировки.

   В начале файла присутствуют строки необходимые для работы библиотеки.

int numberOfHorizontalDisplays = 1;

int numberOfVerticalDisplays = 16;

   У меня модули с микросхемой в SOIC-корпусе. У них есть небольшая особенность. Матрица у модулей установлена повернутой на 90 градусов. Это плата за удобство соединения. Если запустить скетчи, идущие в комплекте с библиотеками, они будут выводить текст снизу вверх в каждом модуле. Текст будет выводится зигзагами. Для лечения этого недуга библиотеке надо "сказать", что вертикальных дисплеев 16 (физически они расположены горизонтально). И потом в void Setup указать библиотеке строку

matrix.setRotation(matrix.getRotation() + 1);

   Она программно перевернет каждую матрицу. И отображаться все будет нормально.

   У модулей с DIP-корпусом микросхем такого нет. Там все красиво, кроме кучи проводов.

   Библиотека MAX72xx Panel довольно скромная. Визуальных эффектов вывода нет. Кластер воспринимается как одно целое. Намного лучше дела обстоят с MD Parola.

 

Parola от MajicDesigns.

   Обладатели модулей с микросхемой в SOIC-корпусе также столкнутся с проблемой ориентации модулей в кластере. Только выглядит это немного по-другому нежели в MAX72xx. Здесь модули окажутся как бы не в своей очереди.

Неправильные настройки библиотеки Parola

   Скетч HelloWorld из образцов в комплекте с библиотекой.

   Программно в скетче мне не удалось вылечить этот недуг. Я вылечил его по-другому. В файле Adruino/libraries/MD_MAX72xx_lib.h в конце нужно найти строки как на картинке.

Как настроить библиотеку Parola

   И исправить в выделенной строке выделенную 1 на 0. Сохранить файл. Arduino IDE можно не перезагружать. Заливаем, смотрим.

Правильные настройки библиотеки Parola

   Теперь можно использовать 24 эффекта анимации. Анимация запускается командой P.displayText(«Текст для вывода», «выравнивание текста», скорость, задержка показа, эффект появления, эффект исчезновения). Как видите, настроек достаточно много.

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

   Как вы уже догадываетесь проблема с кириллическими буквами. Она тоже решаема. Рядом с предыдущим файлом в той же директории лежит файлик MD_MAX72xx_font.cpp. Это файл шрифта. Символы в нем сформированы аналогично файлу шрифта GFX библиотеки. Есть небольшое отличие. Здесь размер символа может быть меньше 5 точек. В библиотеке Adafruit GFX восклицательный знак, например, занимает также 5 точек шириной, как и любой другой символ, только используется один ряд точек. Остальные не светятся, но используются под символ. В Parola тот же восклицательный знак занимает также один ряд точек, только рядом не пустые точки, а могут стоять соседние символы. Понятнее будет разобраться по картинке.

Точечные шрифты библиотек MAX72xx Panel и Parola

   Дополнить файл кириллическими символами аналогично файлу из первой рассмотренной библиотеки пока времени нет. Если кто-нибудь это сделает и пришлет мне файл, я добавлю его к этой статье, и Вам будут благодарны и я, и гости моего сайта.

   Итог. Библиотека MAX72xx Panel от Марка Райса проста в использовании и понимании, но с бедным функционалом.

   Библиотека Parola от MajicDesigns посложнее и ее возможностей хватит практически для любого применения.

Категория: Arduino и т.п. | Добавил: Zlitos (24.01.2017) | Автор: Пьяных А.В.
Просмотров: 30126 | Комментарии: 4 | Теги: MAX72xx Panel, Arduino, LED Matrix, MAX7219, Parola | Рейтинг: 4.8/8
Всего комментариев: 4
3 more400  
0
Доброго времени суток. А у вас нет статьи про max7219 и 8ми разрядные 7ми сегментные индикаторы?

4 Zlitos  
0
Приветствую. Самостоятельной статьи про MAX7219 и семисегментники нет, но вот в этой статье я использовал MAX7219 и 5 семисегментных индикаторов. Там есть схема и скетч. Возможно они Вам помогут.

2 8136821  
1
Hello and thank you for the kind review of the Parola library.
Just to let you know that to set the correct module type the correct file to edit is the MD_MAX72xx.h file - you only need to set the type of module (FC-16 in the case of your example) and the MD_Parola_lib.h file will select the correct types of transformation.
Also, recently there has been a Cyrillic font added to the MD_MAX72xx font builder that can be used.
For those peopl who are interested in more details about the Parola library, I also have a number of articles about the library ("Parola A to Z") on my own blog at https://arduinoplusplus.wordpress.com/

1 zoloto58  
0
Хороший опыт и полезная аналитическая работа. Молодец!
hands

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]