8x8 LED Matrix

12.07.2017

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.

Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky