Макс 7219 подключение к ардуино своими руками

Обновлено: 07.07.2024

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

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

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

Соединение

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

Скетч

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

Видео

Здравствуйте,не могли бы вы дополнить этот код дополнительными комментариями,а именно,что делает код в столбиках:
void Write_Max7219_byte
void Write_Max7219
void Init_MAX7219(void)
Спасибо,я ниразу не программист:) :lol:

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

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

unsigned char n;

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

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


Рис. 1. Схема подключения драйвера светодиодных индикаторов MAX7219, светодиодной матрицы 8х8 и Arduino.

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


Сегодня на повестке дня вывод информации на кластер матричных светодиодных панелей разрешением 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 указать библиотеке строку

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

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

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

Parola от MajicDesigns.

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

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

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

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

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

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

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

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

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

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

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

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

htb1ci2ispxxxxc3xpxxq6xxfxxxh

Микросхема MAX7219 — готовый драйвер для семисегментных и матричных светодиодных индикаторов. В семисегментном индикаторе я уже использовал ее в контроллере вентилятора и погодной станции. В этой статье я напишу о применении готовых светодиодных модулей с MAX7219.

Модули 8×8 с MAX7219 продаются поштучно либо готовыми сборками 8×32. Я брал отдельные модули 8×8 с ценой чуть больше доллара за штуку. Так как при количестве больше 1 шт получалась платная доставка, не поленился, сделал 8 заказов.

100

В комплекте платка с микросхемой, сам индикатор, разъемы для индикатора и для соединения каждой платы.

101

200

201

Готовый собранный экран подключил к ESP8266.
Для таких модулей обычно используется ардуиновская библиотека LedControl . Но мне больше приглянулся драйвер для модулей MAX7219 к графической библиотеке AdafruitGFX.
В отличие от LedControl, где с каждому модулю обращаются по номеру, Max72xxPanel позволяет работать со всеми модулями, как с едиными пиксельным дисплеем.
К ESP8266 подключение такое:

  • DIN -> GPIO13 (MOSI)
  • SCK -> GPIO14 (SCK)
  • CS -> GPIO16 (к любому свободному)

В конструкторе объекта матрицы определяем PinCS, а также количество модулей по вертикали и по горизонтали

Max72xxPanel matrix = Max72xxPanel ( pinCS , numberOfHorizontalDisplays , numberOfVerticalDisplays ) ;

В секции SETUP программы нужно сконфигурировать наш дисплей, то есть задать последовательность подключения модулей и ориентацию каждого модуля.

Микросхема MAX7219 поддерживает 16 градаций яркости светодиодов. Ставим максимальную:

Дисплей превращается в яркий красный фонарь

302

мощностью более 12Вт

301

К тому же довольно ощутимо нагревающийся

101

Собственно удивляться нечему — все написано в даташите на MAX7219, Максимальный ток на всех сегментах одного модуля — 330мА, что при умножении на 8 и дает 2.6А. Минимальный ток — 1/16 от этой цифры. В нашем случае около 160мА. При установке интенсивности ток будем меняться с шагом 1/16 от максимального.
При такой яркости дисплея не вижу смысла устанавливать значение интенсивности больше 7.
С током разобрались, перейдем к выводу информации на наш дисплей.
В примерах к библиотеке Max72xxPanel есть простенькая программа — вывод бегущей строки. По умолчанию, строка выдается стандартным шрифтом библиотеки GFX 5×7.
Русификация данной библиотеки подробно рассмотрена здесь.
Суть сводится к тому, что нужно скачать по ссылке архив, взять оттуда русский фонт и положить его в папку AdafruitGFX-master. Остальные файлы, это примеры, как перекодировать константы, введенные в среде Arduino в UTF-8 в кодировку фонта 1251.
Там есть для этого функция utf8rus

Небольшое отступление про кодировку русских букв в среде Ардуино

scr1

С отображением текста теперь все ясно. Но дисплей у на ГРАФИЧЕСКИЙ. Значит без отображения графики, хотя бы статической, никуда.
Чтобы подсунуть графику библиотеке GFX, нужно запихнуть ее в байтовый массив.
Для этого можно воспользоваться онлайн-сервисом
Рисуем картинку или иконку в любом редакторе, подсовываем ее этому сервису. Шаманим с параметрами, если нужно и получаем готовый массив

scr2

Теперь если скормить этот массив функции drawBitmap, то получаем ее на дисплее

Читайте также: