Матричен дисплей на MAX7219

Чипът MAX7219 е готов драйвер за седемсегментни и матрични LED индикатори. В седемсегментен дисплей вече го използвах в контролер на вентилатор и метеорологична станция. В тази статия ще пиша за приложението на готови LED модули с MAX7219.
Модулите 8x8 с MAX7219 се продават поотделно или в сглобяеми модули 8x32. Взех отделни модули 8x8 за малко над един долар всеки. Тъй като при количество над 1 брой се получи платена доставка, не ме мързеше, направих 8 поръчки.

Комплектът включва шал с микросхема, самия индикатор, конектори за индикатора и за свързване на всяка платка.

Размерите на индикатора са 3,2 см X 3,2 см. Свързване към микроконтролера чрез SPI “еднопосочно” чрез три проводника. Модулите са свързани каскадно - DIN- > DOUT. Всички други заключения са паралелни. След като свързах един модул към arduino (няма останали снимки), реших веднага да сглобя дисплея. От двете конфигурации 8×64 и 16×32 избрах втората, тъй като реших в крайна сметка да правя часовници. Първата е класическата "пълзяща линия". За да се занимавам по-малко с кабели, разпръснах платката за дисплея (и защо да не инсталирам контролера върху него веднага?)


Свързах готовия сглобен екран към ESP8266. За такива модули обикновено се използва библиотеката LedControl на Arduino. Но драйверът за модулите MAX7219 за графичната библиотека AdafruitGFX ми хареса повече. За разлика от LedControl, където всеки модул е обозначен с номер, Max72xxPanel ви позволява да работите с всички модули като дисплей с един пиксел. Връзката към ESP8266 е както следва:
- DIN-> GPIO13 (MOSI)
- SCK-> GPIO14 (SCK)
- CS-> GPIO16 (до всеки безплатен)
В конструктор на обектиматрици определят PinCS, както и броя на модулите вертикално и хоризонтално
В секцията SETUP на програмата трябва да конфигурираме нашия дисплей, тоест да зададем последователността за свързване на модули и ориентацията на всеки модул.
Чипът MAX7219 поддържа 16 нива на яркост на LED. Задаваме максимума:
Дисплеят се превръща в яркочервена светлина

мощност над 12W

Освен това се затопля доста осезаемо.

Всъщност няма какво да се чудим - всичко е написано в листа с данни на MAX7219.Максималният ток на всички сегменти на един модул е 330mA, което, умножено по 8, дава 2.6A. Минималният ток е 1/16 от тази цифра. В нашия случай около 160mA. При настройване на интензитета токът ще се променя на стъпки от 1/16 от максимума. При такава яркост на дисплея не виждам причина да задаваме стойност на интензитета, по-голяма от 7. Разбрахме тока, нека да преминем към показване на информация на нашия дисплей. В примерите за библиотеката Max72xxPanel има проста програма - изход на работещ ред. По подразбиране низът се изобразява със стандартния шрифт GFX 5x7. Русификацията на тази библиотека е разгледана подробно тук. Изводът е, че трябва да изтеглите архива от линка, да вземете българския шрифт от там и да го поставите в папката AdafruitGFX-master. Останалите файлове са примери за това как да конвертирате константи, въведени в средата на Arduino в UTF-8, в кодиране на шрифта 1251. Има функция за товаutf8rus
Малко отклонение за кодирането на българските букви в средата на Arduino


Сега, ако подадем този масив към функцията drawBitmap, ще го изведем на дисплея