V tomto tutoriálu navrhneme 8x8 LED maticový rolovací displej pomocí Arduino Uno, který bude zobrazovat rolovací abecedy.
8x8 LED Matrix obsahuje 64 LED (Light Emitting Diodes), které jsou uspořádány ve formě matice, proto se jmenuje LED matice. Tuto Matrix vyrobíme pájením těchto 64 LED na perfboard nebo DOT PCB. LED diody mohou být jakékoli barvy, vyberte si ty, které máte k dispozici. Potom napíšeme program pro Arduino pro ovládání těchto 64 LED diod matice. UNO podle programu napájí příslušné LED diody, aby zobrazovaly znaky posouváním.
Požadované komponenty:
- Arduino Uno
- 64 LED
- Deska s dalšími pájecími nástroji
- 1KΩ rezistor (8 kusů)
- Napájení (5v)
Vysvětlení obvodu a práce:
K dispozici je 64 LED diod uspořádaných do maticového tvaru. Takže máme 8 sloupců a 8 řádků. Přes tyto řádky a sloupce jsou spojeny všechny kladné svorky v řadě. Pro každý řádek existuje jeden společný kladný terminál pro všech 8 LED v tomto řádku. Je to znázorněno na následujícím obrázku,
Takže pro 8 řádků máme 8 společných kladných svorek. Uvažujme o první řadě, jak je vidět na obrázku, 8 LED diod od D57 do D64 má společnou kladnou svorku a jsou označeny 'POSITIVE0'. Nyní, pokud chceme, aby jedna nebo všechny LED svítily v prvním ŘÁDKU matice, měli bychom napájet PIN0 LED Matrix. Stejně tak, pokud chceme svítit libovolnou LED (nebo všemi) v jakémkoli ŘÁDKU, musíme napájet odpovídající společný kladný pól svorky příslušného řádku.
To ještě neskončilo a pouhé ponechání MATRIX ROWS s pozitivní zásobou nic nepřinese. Musíme uzemnit negativy LED, abychom je rozsvítili. Takže v matici LED 8x8 jsou všechny záporné vývody LED v libovolném sloupci spojeny dohromady a tvoří osm společných záporných vývodů, stejně jako všechny záporné vývody v prvním sloupci jsou připojeny společně k PIN-A1 (NEGATIVNÍ7). To je znázorněno na následujícím obrázku:
Jeden by měl věnovat pozornost těmto pinům při pájení LED na Perfboard.
Nyní, pokud potřebujeme uzemnit jakoukoli LED v prvním sloupci, uzemníme PIN-A1 (NEGATIVE7) MATRIXu a uzemní všechny LED v prvním sloupci. Stejný proces platí pro všech dalších sedm společných záporných sloupců.
Od teď víte, jak funguje Common Positive a Common Negative. Pojďme je dát dohromady, abychom zjistili, jak spolupracují, a konečný displej Circuit for Scrolling 8x8 LED Matrix bude vypadat takto:
Řízení 8x8 LED matice pomocí multiplexování:
Řekněme, že chceme zapnout LED57, pak musíme napájet PIN0 UNO a uzemnit PIN-8 UNO. Nyní pro zapnutí LED57 i LED50 musíme zapnout PIN0, PIN1 a uzemnit PIN8, PIN9. Tím se však nejen zapnou D57, D50, ale také D49, D58. Abychom tomu zabránili, používáme techniku nazvanou Multiplexing. O této multiplexní technice v 8x8 LED Matrix jsme již hovořili podrobně; projděte si tento článek pro podrobné vysvětlení. Zde stručně vysvětlujeme multiplexování.
Lidské oko nedokáže zachytit frekvenci vyšší než 30 Hz. To znamená, že LED svítí a zhasíná nepřetržitě rychlostí 30 Hz nebo více. Oko vidí, že LED trvale svítí. To však není tento případ a LED se bude ve skutečnosti neustále zapínat a vypínat. Tato technika se nazývá multiplexování.
Řekněme například, že chceme zapnout pouze LED57 a LED50 bez zapnutí D49 a D58. Trik je v tom, že nejprve poskytneme napájení první řadě, abychom rozsvítili LED57 a počkali na 1mSEC, a pak ji vypneme. Poté poskytneme napájení do druhé řady, abychom rozsvítili LED50 a počkali na 1mSEC, pak ji vypneme. Cyklus probíhá nepřetržitě s vysokou frekvencí a LED57 a LED50 se rychle zapínají a vypínají a obě LED diody se zdají být pro naše oko trvale zapnuté. Znamená to, že dodáváme energii pouze do jedné řady najednou, což eliminuje pravděpodobnost rozsvícení dalších LED v jiných řadách. Tuto techniku použijeme k zobrazení všech postav.
K dispozici je také knihovna s názvem LedControlMS.h, která se postará o celou tuto složitost multiplexování, kde stačí zadat pouze znak nebo číslo, které chcete vytisknout na LED matici, pro více podrobností zkontrolujte tuto matici Arduino LED s projektem MAX7219.
Vysvětlení programování:
V našem kódu jsme zapsali desítkovou hodnotu pro každý znak a naprogramovali jsme tyto hodnoty do Arduina. Program napsal, aby tyto hodnoty posunul na další řádek každých 0,2 s, což bude považováno za posouvání znaků nahoru, je to velmi jednoduché.
Chcete-li změnit znaky, které se mají zobrazit, stačí nahradit hodnotu v poli char ALPHA podle hodnot znaků uvedených níže, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12 108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Stejně jako chcete zobrazit DAD na LED Matrix, pak nejprve nahraďte hodnoty znaků v poli char ALPHA zadáním hodnot pro znaky D, A a D z výše uvedeného seznamu:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
Celkové hodnoty jsou nyní 5 * 10 = 50 hodnot, takže
Nahraďte, for (int x = 0; x <142; x ++) // 150-8 (k zastavení přetečení) {…….. With, for (int x = 0; x <42; x ++) // 50-8 (k zastavení přetečení) {……..
Musíte tedy jen změnit číslo.
Tímto jste provedli programování a nyní můžete posouvat libovolný text na matici LED 8x8, zkontrolujte celý kód níže s ukázkovým videem.