Arduino подключение матрицы 8х8

Arduino подключение матрицы 8х8

Если Вы делаете покупки в интернет магазинах AliExpress, GearBest, Banggood, ASOS, Ozon, то вступайте в мою партнерскую программу. Таким образом поможете развитию моего сайта и скорейшему выходу новых статей. Ваша выгода возврат до 18% потраченных средств. Кэшбэк проверенный. Деньги выводят быстро и без лишних проволочек.

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

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

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

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

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

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

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

MAX72xx Panel

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

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

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

Читайте также:  Как подсчитать итог в excel

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

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

int numberOfHorizontalDisplays = 1;

int numberOfVerticalDisplays = 16;

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

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

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

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

Parola от MajicDesigns.

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

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

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

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

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

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

Читайте также:  Psql создать базу данных

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

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

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

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

1. Матричный индикатор

Ардуино: управление светодиодной матрицей 8×8 : 6 комментариев

А почему Вы во второй программе пишите:
fill( data[frame][7-line] );
?
Ведь в первой программе было:
fill( data[line] );
То есть изображение будет перевёрнутым.

Не подскажите как выполнить второе задание «Игра змейка»? Управление положением светодиода с помощью кнопок и границы игрового поля уже реализовал, а дальше не пойму что делать, «яблоко» сдвигается вместе с змейкой.

1) Можно примерно в 2 раза увеличить быстродействие дисплея. Нет необходимости для каждой строки передавать в регистр все 8 бит кода строки, можно передать всего один бит и сразу его защелкнуть. Поэтому эти сдвиговые регистры лучше разъединить. А еще лучше для строк использовать регистр 74HC164 без защелки:
http://easyelectronics.ru/sdvigovyj-registr.html

Читайте также:  Числа фибоначчи паскаль рекурсия

2) В setup() желательно установить начальные значения next_flick и next_switch, а также поменять условия проверки на
if( tm >= next_flick )
и
if( tm >= next_switch )
Это также относится к уроку «Динамическая индикация»:
http://robotclass.ru/tutorials/arduino-dynamic-led-indication/

Ваши уроки самые лучшие из всех, которые я видел в интернете. Именно благодаря им я стал внимательно разбираться.

Первый скетч не компилируется — выдает следующию ошибку
/var/folders/qj/pm02y_4n44qbtwzxzmzs136h0000gn/T/arduino_modified_sketch_137520/sketch_nov21b.ino: In function ‘void setup()’:
sketch_nov21b:49:16: error: ‘oe_pin’ was not declared in this scope
setPinFast(oe_pin);
^

/var/folders/qj/pm02y_4n44qbtwzxzmzs136h0000gn/T/arduino_modified_sketch_137520/sketch_nov21b.ino:49:16: note: suggested alternative: ‘sh_pin’
setPinFast(oe_pin);
^

sh_pin
exit status 1
‘oe_pin’ was not declared in this scope

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Рассмотрим светодиодный матричный модуль на базе чипа MAX7219 и способ подключения её к Arduino UNO R3.

Данный модуль удобен тем, что для управления используется всего 3 контакта, помимо питания. Можно объединять несколько таких модулей в большой дисплей, но с ростом количества бодулей бут падать скорость отрисовки.

Оборудование

Соединение

  • Arduino pin8 с выводом DIN модуля
  • Arduino pin9 с выводом CS модуля
  • Arduino pin10 с выводом CLK модуля
  • Питание 5В с выводом VCC модуля (если несколько матричных модулей, то питание от Arduino будет не хватать и прийдется модули запитывать от внешнего источника питания)
  • Земля питания с выводом GND модуля (земля модуля и земля Arduino должны быть соединены)

Скетч

Будет рисоваться символ сердца, затем все светодиоды последовательно зажгем и затем последовательно все погасим. И так по кругу бесконечно.

Видео

А я купил блок из 4-х таких матриц . с этим скетчем получился сдвиг и я его немного дополнил. Так что я теперь 1 раз программист 🙂 Только относительно разъёма сердца лежат на боку и непонятно откуда тут число 33 — unsigned char disp1[33][8] . А дополнил так:

1. Третья строка:

unsigned char n;

2. Добавил цикл на количество матриц:

void Write_Max7219(unsigned char address, unsigned char dat) <
digitalWrite(Max7219_pinCS, LOW);
for (n = 1; n Ответить | Ответить с цитатой | Цитировать

Ссылка на основную публикацию
Adblock detector