V tomto výučbe navrhneme 8x8 LED maticový rolovací displej pomocou Arduino Uno, ktorý bude zobrazovať rolovacie abecedy.
8x8 LED Matrix obsahuje 64 LED (Light Emitting Diodes), ktoré sú usporiadané vo forme matice, preto sa volá LED matica. Chystáme sa vyrobiť túto Matrix spájkovaním týchto 64 LED diód na perfboard alebo DOT PCB. LED diódy môžu byť akejkoľvek farby, vyberte si tie, ktoré sú k dispozícii u vás. Potom napíšeme program pre Arduino na ovládanie týchto 64 LED diód matice. UNO podľa programu napája príslušné LED diódy, aby zobrazovala znaky rolovaním.
Požadované komponenty:
- Arduino Uno
- 64 LED diód
- Doska s ďalšími spájkovacími nástrojmi
- 1KΩ rezistor (8 kusov)
- Napájanie (5v)
Vysvetlenie obvodu a práce:
Existuje 64 LED diód usporiadaných do maticového tvaru. Máme teda 8 stĺpcov a 8 riadkov. Cez tieto riadky a stĺpce sú spojené všetky kladné svorky v rade. Pre každý riadok je jeden spoločný kladný pól pre všetkých 8 LED v danom rade. Je to znázornené na nasledujúcom obrázku,
Takže pre 8 riadkov máme 8 spoločných kladných koncoviek. Vezmime si prvý rad, ako je vidieť na obrázku, 8 LED diód od D57 do D64 má spoločnú kladnú svorku a sú označené „POSITIVE0“. Ak teraz chceme, aby jedna alebo všetky LED svietili v prvom riadku matice, mali by sme napájať PIN0 LED matice. Rovnako, ak chceme svietiť ľubovoľnou LED (alebo všetkými) v ľubovoľnom riadku, musíme napájať zodpovedajúci spoločný kladný pól terminálu príslušného riadku.
To ešte neskončilo a iba ponechanie MATRIX ROWS s pozitívnym prísunom nič neprinesie. Aby sme mohli svietiť, musíme uzemniť negatívy LED. Takže v matici LED 8x8 sú všetky záporné vývody LED v ktoromkoľvek stĺpci spojené dohromady a tvoria osem spoločných záporných vývodov , rovnako ako všetky záporné vývody v prvom stĺpci sú spojené dohromady s PIN-A1 (NEGATÍVNE 7). Toto je zobrazené na nasledujúcom obrázku:
Jeden by mal venovať pozornosť týmto pinom pri spájkovaní LED diód na Perfboard.
Teraz, ak potrebujeme uzemniť ľubovoľnú LED v prvom stĺpci, uzemníme PIN-A1 (NEGATIVE7) systému MATRIX a uzemnia sa všetky LED v prvom stĺpci. Rovnaký postup platí pre všetkých ďalších sedem bežných záporných stĺpcov.
Odteraz viete, ako funguje bežné pozitívne a bežné negatívne. Poďme ich dať dohromady, aby sme videli, ako spolupracujú, a výsledný displej Circuit for Scrolling 8x8 LED Matrix bude vyzerať takto:
Riadenie matice LED 8x8 pomocou multiplexovania:
Teraz povedzme, že chceme zapnúť LED57, potom musíme napájať PIN0 UNO a uzemniť PIN-8 UNO. Teraz, aby sme zapli LED57 aj LED50, musíme napájať PIN0, PIN1 a uzemniť PIN8, PIN9. Týmto však zapnete nielen D57, D50, ale aj D49, D58. Aby sme sa vyhli tomu, že používame techniku zvanú Multiplexovanie. O tejto multiplexnej technike v 8x8 LED Matrix sme už hovorili podrobne; podrobný výklad nájdete v tomto článku. Tu stručne vysvetľujeme multiplexovanie.
Ľudské oko nedokáže zachytiť frekvenciu viac ako 30 HZ. To znamená, že LED svieti a zhasína nepretržite rýchlosťou 30 Hz alebo viac. Oko vidí LED ako nepretržite svieti. To však nie je tento prípad a LED sa budú neustále zapínať a vypínať. Táto technika sa nazýva multiplexovanie.
Povedzme napríklad, že chceme zapnúť iba LED57 a LED50 bez zapnutia D49 a D58. Trik je v tom, že najskôr poskytneme napájanie prvému radu, aby sme zapli LED57 a počkali na 1mSEC, a potom to VYPNEME. Potom poskytneme napájanie do druhého radu na zapnutie LED50 a počkáme na 1mSEC, potom ho vypneme. Cyklus pokračuje s vysokou frekvenciou a LED57 a LED50 sa rýchlo zapínajú a vypínajú a obidve LED diódy sa zdajú byť pre naše oko nepretržite rozsvietené. Znamená to, že napájame iba jeden riadok po druhom, čo eliminuje pravdepodobnosť rozsvietenia ďalších LED v iných riadkoch. Touto technikou ukážeme všetky postavy.
K dispozícii je tiež knižnica s názvom LedControlMS.h, ktorá sa postará o celú túto zložitosť multiplexovania, kde stačí zadať iba znak alebo číslo, ktoré chcete vytlačiť na maticu LED, podrobnejšie skontrolujte túto maticu LED Arduino s projektom MAX7219.
Vysvetlenie programovania:
V našom kóde sme napísali desatinnú hodnotu pre každý znak a tieto hodnoty sme naprogramovali do Arduina. Program napísal, aby tieto hodnoty posielal na ďalší riadok každých 0,2 s, čo sa bude považovať za posúvanie znakov nahor, je to veľmi jednoduché.
Ak chcete zmeniť zobrazené znaky, stačí nahradiť hodnotu v poli char ALPHA podľa hodnôt znakov uvedených nižšie, 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,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 99 107 117 117 999,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
Rovnako ako ak chcete zobraziť DAD na LED Matrix, potom najskôr nahraďte hodnoty znakov v poli char ALPHA zadaním hodnôt pre znaky D, A a D z vyššie uvedeného zoznamu:
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 sú teraz 5 * 10 = 50 hodnôt
Nahraďte, za (int x = 0; x <142; x ++) // 150-8 (na zastavenie pretečenia) {…….. Za, za (int x = 0; x <42; x ++) // 50-8 (na zastavenie pretečenia) {……..
Musíte teda iba zmeniť číslo.
Týmto ste programovanie dokončili a teraz môžete prechádzať ľubovoľným textom na matici LED 8x8, skontrolovať celý kód uvedený nižšie s ukážkovým videom.