Maticové displeje sú obľúbené u Arduino nadšencov pre svoju ľahkú použiteľnosť skrz dostupné knižnice aj široké spektrum dostupných modulov. Slúžia na vizualizáciu rôznych stavov, údajov, textu, aj s rôznymi efektmi ako bežiaci , či blikajúci text a podobne. Medzi najpoužívanejšie radíme maticové displeje 8x8, ktoré majú celkom 64 LED diód, ktoré je možné ovládať. Keďže bežné Arduino nemá takýto počet výstupov, je potrebné použiť samostatný obvod, ktorý s mikrokontrolérom komunikuje cez zbernicu, najčastejšie SPI pre rýchle zmeny stavov.

Okrem postuvných registrov, napr. 74HC595 môžeme použiť aj špecializované obvody, napr. MAX7219. Tento obvod od Maxim Integrated (dnes Analog Devices) nájdeme prakticky pri všetkých maticových displejoch s rozmerom 8x8, nakoľko je to práve počet, ktorý dokáže riadiť. Je vhodný pre 5V operačnú logiku a v porovnaní s posuvným registrom 74HC595 má aj ďalšie podporované funkcionality ako ovládanie jasu LED diód. Ovládanie jasu môže pôsobiť dynamicky pri vykresľovaní určitých objektov a dáva to do vizualizácie pocit dynamiky pri vykresľovaní a postupnom naberaní na jase.



Na druhú stranu, skrz MAX7219 nie je možné ovládať farbu diód, teda aj matice osadené s týmto obvodom majú jednotnú farbu diód, najčastejšie je dostať červený, modrý, alebo zelený variant. RGB matice bývajú najčastejšie osadené LED diódami WS2812B (WorldSemi), ktoré sú RGB a sú adresovateľné, inými slovami vieme ovládať farbu každej jednej diódy, vrátane jej jasu (nie PWM spôsobom). Pre WS2812B je najpoužívanejšia knižnica FastLED, alebo Adafruit NeoPixel. WS2812 diódy sú obisahnuté aj na mnohých LED pásikoch predávaných na metráž. Jedna LED dióda má odber pri plnom jase a plných farbách 60 mA. Teda ak ide o pásik s viac, než pár diódami je určite na mieste napájať to externým zdrojom a nemôžu byť napájané skrz Arduino.

FastLED je pokročilá knižnica, ktorá je náročnejšia na RAM, no zato umožňuje vytvárať neskutočné animácie a je optimalizovaná na rýchlosť a dokonca okrem WS2812 podporuje aj iné adresovateľné LED diódy ako APA102, SK9822, HD107s, DMX a mnoho iných. NeoPixel knižnica je vhodná pre začiatočníkov pre zoznámeni sa s adresovateľnými LED diódami a ľahšie vizuálne efekty. Adafruit túto knižnicu ukazoval vždy výhradne s vlastnými produktami ako NeoPixel ring.

Vráťme sa ale k nášmu matrix displeju s obvodom MAX7219. Pre štandardnú maticu 8x8 nebudete potrebovať externý zdroj. Pri plne rozsvietenej matici je odber pod 70 mA. MAX7219 okrem maticových displejov nájde využitie aj pre riadenie 7-segmentových displejov a dokáže ich riadiť v jednom momente až 8 zároveň.

Rovnako tak je ale možné obvody MAX7219, respektíve celé maticové moduly prepájať aj do série, vďaka čomu je možné ovládať aj väčšie zobrazovacie plochy a zobraziť viac textu zároveň. Ak nechcete prepájať moduly týchto matíc pracne káblami, môžete si kúpiť aj hotový modul, ktorý už má jednotlivé matice a moduly MAX7219 už má prepojené, napr. FC16.

MAX7219 sa používa v maticových displejoch so spoločnou katódou, teda mínusom. Napätie sa privádza na kladný pól, ktorý diódu rozsvieti. Pri dynamickom vykresľovaní je dôležité zvoliť správnu rýchlosť prepisu stavov LED diód, čo imituje plynulujší beh animácii. Samotný stav je určený konkrétnym rozsvietením LED diód.
Samotné LED diódy môžu zobrazovať konkrétnu vec, ale zároveň môžu slúžiť aj len ako pozadie a samotný objekt môže byť vizuálny na zhasnutých LED diódach matice (i keď vzhľadom na 8x8 maticu to nemusí pôsobiť až tak dobre, na väčších maticiach by takýto stav mohol vyniknúť lepšie). Veľkú prácu miesto používateľov urobia aj knižnice, kde je pár príkazmi možné nastaviť, koľko matíc sa používa a zavolaním jednoduchého príkazu môže cez displeje prechádzať plávajúci text, podobne ako to poznáme z obchodov, či MHD. Rovnako tak aj v prípade jedného maticového displeja je možné vykresľovať informáciu napríklad po jednotlivých znakoch s opakovaním. Na základe pauzy pred spustením animácie môže byť jasne viditeľná a prečítaná informácia na displeji i keď sa zobrazí len po jednotlivých znakoch.




Príklady vykreslenia šípky ako objektu bez pozadia vs. šípka s vykresleným pozadím




Príklad vykresleného symbolu X oboma spôsobmi


Podobne ako pri segmentových displejoch aj tu platí, že je možné prostredníctvom fólie zvýšiť kontrast displeja, aby bol objekt v matici lepšie čitateľný a nebol vizuálne rozostrený tým, že osvetľuje aj okolité diódy (ukážka zo segmetnového displeja), ako vidieť, stupeň a číslo 8 je pekne čitateľné spoza fólie s dobrým kontrastom. Ale už napríklad číslo 5 vykreslené naľavo splýva s ostatnými segmentami displeja, fólia by kontrast násobne vylepšila). Samozrejme lepšie rozlíšenie aj z pohľadu výstupu získate ak použijete väčšie matice s násobne väčším počtom diód.

Pri ovládaní matice skrz MAX7219 môžete použiť mnoho knižníc, pričom môžete použiť dva základné princípy reprezentácie matice. Buď pôjde o 64-bit číslo, ktoré reprezentuje celú maticu v tomto čísle, teda kompletnú kombináciu 8x8, no najmä pre začiatočníkov nemusí byť ľahko použiteľná, lebo reprezentácii nemusia rozumieť. Pre tento typ môžete využiť tento MATRIX editor, kde si môžete vytvoriť vlastné sekvencie: https://xantorohara.github.io/led-matrix-editor/
Mnoho ľudí ale preferuje starý dobrý spôsob bajtovej reprezentácie. Teda prakticky v programe budete max pole 8x8, kedy každý riadok vykreslíte ako 1 bajt s 8-bitovou kombináciou 0 a 1 hodnôt. 1 samozrejme znamená zosvietenú LED diódu a 0 zhasnutú LED.
Príklad matice 8x8 s 8-bitovou reprezentáciou každého riadka, štandardne pole byte:
{
0b11111111, //cely riadok rozsvietený
0b00000000, //cely riadok zhasnutý
0b00000000, //cely riadok zhasnutý
0b10000000, //len prvá LED rozsvietená
0b00000001, //len posledná LED rozsvietená
0b00000000, //cely riadok zhasnutý
0b00000000, //cely riadok zhasnutý
0b11111111 //cely riadok rozsvietený
}
Táto vizualizácia repreztentuje celý maticový displej a obsah, ktorý na neho bude vykreslený. V praxi si tak urobíte niekoľko takýto "obrazov", ktoré môžu imitovať stav napríklad pohybujúcej sa šípky. Vďaka tomu s dostatočne rýchlym zobrazovaním sa bude pohyb šípky prepínaním obrazov zdať dynamický. Je potom už len na vás, či budete animáciu prehrávať dookola, alebo len jednotlivo raz, napríklad po stlačení tlačidla, ktoré funguje ako trigger pre akciu.
Matice s MAX7219 sú vhodné pre ľahšie vizualizácie a nedosiahnete s nimi efekty ako napríklad s adresovateľnými LED diódami WS2812. Sú ale vhodné pre výpis textu. Vynikajú najmä praktickosťou, jednoduchým zapojením a použitím. Ani v 4-maticovej verzii (modul FC16) nevyžadujú externé napájanie samostatným zdrojom. Vhodné pre Arduino 5V logiku.