8x8 LED Matrix
V tomto návodu si ukážeme 8x8 Matrix s řadičem MAX7219 a následně ho zapojíme a naprogramujeme aby něco dělal.
Matrix je pole 64 LED diod (v mém případě červených ale jsou i jiné barvy), které díky řadiči MAX7219 můžeme programovat pomocí tří pinů (DIN, CS CLK). K ovládání tohoto řadiče budeme potřebovat knihovnu LedControlMS.h odkaz na stáhnutí najdete níže.
LED diody na matrixu můžeme aktivovat několika různými způsoby:
Jako jednotlivé body: lc.setLed(0,0,0,true); //rozsvítí bod na souřadnicích 0,0 (druhá a třetí číslice) první číslice značí na kolikátém matrixu diodu rozsvicujeme (to platí i u ostatních příkazů)
Jako sloupce: lc.setColumn(0,1,(byte)0); // Celý sloupec na diagonále 0 (druhá číslice) je zhasnutý (třetí číslice)
Jako řádky: lc.setRow(0,1,(byte)0); // Celý řádek na diagonále 0 (druhá číslice) je zhasnutý (třetí číslice)
Jako znaky: lc.displayChar(0,15); //zobrazí znak A z tabulky ascii (celou tabulku najdete níže, kde se jí budeme věnovat)
Kód:
#include "LedControlMS.h"
/*
Připojíme MAX7219 LED Matrix - datové piny
pin 12 spojíme s vstupem DIN - Data In
pin 11 spojíme s vstupem CLK - Clock
pin 10 spojíme s vstupem CS - Load
napájecí piny
pin VCC - arduino 5V
pin GND - arduino GND
*/
LedControl lc=LedControl(12,11,10,1); //nastavení pinů matrixu (DIN,CLK,CS,počet zapojených matrixů)
void setup() {
/*
MAX72XX je v okamžiku startu v úsporném režimu
*/probuzení displeje */
lc.shutdown(0,false);
/* Nastavení jasu diod */
lc.setIntensity(0,8);
/* zhasnutí displeje */
lc.clearDisplay(0);
}
void loop() {
// velký čtverec
lc.setLed(0,0,0,true);
lc.setLed(0,0,1,true);
lc.setLed(0,0,2,true);
lc.setLed(0,0,3,true);
lc.setLed(0,0,4,true);
lc.setLed(0,0,5,true);
lc.setLed(0,0,6,true);
lc.setLed(0,0,7,true);
lc.setLed(0,0,7,true);
lc.setLed(0,1,7,true);
lc.setLed(0,2,7,true);
lc.setLed(0,3,7,true);
lc.setLed(0,4,7,true);
lc.setLed(0,5,7,true);
lc.setLed(0,6,7,true);
lc.setLed(0,7,7,true);
lc.setLed(0,7,0,true);
lc.setLed(0,7,1,true);
lc.setLed(0,7,2,true);
lc.setLed(0,7,3,true);
lc.setLed(0,7,4,true);
lc.setLed(0,7,5,true);
lc.setLed(0,7,6,true);
lc.setLed(0,7,7,true);
lc.setLed(0,0,0,true);
lc.setLed(0,1,0,true);
lc.setLed(0,2,0,true);
lc.setLed(0,3,0,true);
lc.setLed(0,4,0,true);
lc.setLed(0,5,0,true);
lc.setLed(0,6,0,true);
lc.setLed(0,7,0,true);
// prostřední čtverec
lc.setLed(0,2,2,true);
lc.setLed(0,2,3,true);
lc.setLed(0,2,4,true);
lc.setLed(0,2,5,true);
lc.setLed(0,3,5,true);
lc.setLed(0,4,5,true);
lc.setLed(0,5,5,true);
lc.setLed(0,5,4,true);
lc.setLed(0,5,3,true);
lc.setLed(0,5,2,true);
lc.setLed(0,4,2,true);
lc.setLed(0,3,2,true);
}
Po nahrání kódu by to mělo vypadat nějak takto:

Tabulka ASCII.
Už jsme si říkali, že na matrixu můžeme zobrazit znaky z tabulky ASCII, je to velmi užitečná věc, protože tabulka ASCII obsahuje celou abecedu, čísla od 1 do 9 a několik znaků.
Příkaz pro zobrazení znaku z tabulky na matrixu je jednoduchý lc.displayChar(0,15); - tento příkaz zobrazí písmeno A, protože A je v tabulce ASCII patnácté, což znamená, že vlastně jen stačí místo čísla 15 napsat pořadí znaku, který chcete zobrazit a je to. Dám vám sem ke stáhnutí celou tabulku ASCII ale také tabulku, kterou jsem si pro sebe vytvořil abych nemusel nic počítat.
Celá tabulka ASCII:
Moje zjednodušená tabulka:
A kdyby to někoho zajímalo tak tabulku ascii najdete, když si otevřete knihovnu pro ovládání matrixu jako textový dokument. Doporučuji použít PsPad, ale můžete použít i např. poznámkový blok
Zapojení dvou a více matrixů.

Určitě jste si všimli, že z horní části matrixu vede 5 pinů, o jejich využití si teď budeme povídat.
Těchto 5 pinů slouží k připojení druhého matrixu k prvnímu a takto potom můžeme připojit i třetí k druhému atd. my si ale ukážeme příklad pouze se dvěma matrixy. Výhodou tohto je, že můžeme ovládat kolik matrixů chceme a na Arduino desce zabereme pouze tři datové a dva napájecí piny.
Kód:
#include "LedControlMS.h"
LedControl lc=LedControl(12,11,10,2);
void setup() {
// probuzení prvního displeje
lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);
//probuzení druhého displeje
lc.shutdown(1,false);
lc.setIntensity(1,8);
lc.clearDisplay(1);
}
void loop() {
// velký čtverec bude svítit na prvním matrixu
lc.setLed(0,0,0,true);
lc.setLed(0,0,1,true);
lc.setLed(0,0,2,true);
lc.setLed(0,0,3,true);
lc.setLed(0,0,4,true);
lc.setLed(0,0,5,true);
lc.setLed(0,0,6,true);
lc.setLed(0,0,7,true);
lc.setLed(0,0,7,true);
lc.setLed(0,1,7,true);
lc.setLed(0,2,7,true);
lc.setLed(0,3,7,true);
lc.setLed(0,4,7,true);
lc.setLed(0,5,7,true);
lc.setLed(0,6,7,true);
lc.setLed(0,7,7,true);
lc.setLed(0,7,0,true);
lc.setLed(0,7,1,true);
lc.setLed(0,7,2,true);
lc.setLed(0,7,3,true);
lc.setLed(0,7,4,true);
lc.setLed(0,7,5,true);
lc.setLed(0,7,6,true);
lc.setLed(0,7,7,true);
lc.setLed(0,0,0,true);
lc.setLed(0,1,0,true);
lc.setLed(0,2,0,true);
lc.setLed(0,3,0,true);
lc.setLed(0,4,0,true);
lc.setLed(0,5,0,true);
lc.setLed(0,6,0,true);
lc.setLed(0,7,0,true);
// prostřední čtverec bude svítit na druhém matrixu
lc.setLed(1,2,2,true); //všiměte si, že první číslo je 1, protože chceme aby se dioda rozsvítila na druhém matrixu
lc.setLed(1,2,3,true);
lc.setLed(1,2,4,true);
lc.setLed(1,2,5,true);
lc.setLed(1,3,5,true);
lc.setLed(1,4,5,true);
lc.setLed(1,5,5,true);
lc.setLed(1,5,4,true);
lc.setLed(1,5,3,true);
lc.setLed(1,5,2,true);
lc.setLed(1,4,2,true);
lc.setLed(1,3,2,true);
}
Po nahrání kódu by to mělo vypadat nějak takto:

Sem patří váš dlouhý nadpis
Váš text začíná právě zde. Klikněte a můžete začít psát. Ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit sed quia.
První služba
Klikněte a můžete začít psát. Porro quisquam est qui dolorem ipsum quia dolor sit.
Druhá služba
Klikněte a můžete začít psát. Eos qui ratione voluptatem sequi nesciunt neque porro.
Třetí služba
Klikněte a můžete začít psát. Quis nostrum exercitationem ullam corporis suscipit.