V tej vadnici bomo zasnovali 8x8 LED matrični drsni zaslon z uporabo Arduino Uno, ki bo prikazal drsne abecede.
8x8 LED matrica vsebuje 64 LED (svetlečih diod), ki so razporejene v obliki matrike, zato je ime LED matrica. To matrico bomo naredili s spajkanjem teh 64 LED na perfboard ali DOT PCB. LED diode so lahko poljubne barve, izberite tiste, ki so na voljo pri vas. Nato bomo napisali program za Arduino za nadzor teh 64 matric LED. UNO v skladu s programom napaja ustrezne LED diode za prikaz znakov na drsni način.
Potrebne komponente:
- Arduino Uno
- 64 LED
- Perfboard z drugimi orodji za spajkanje
- 1KΩ upor (8 kosov)
- Napajanje (5v)
Pojasnilo vezja in dela:
V matrični obliki je razporejenih 64 LED. Tako imamo 8 stolpcev in 8 vrstic. Nad temi vrsticami in stolpci so zbrani vsi pozitivni terminali v vrsti. Za vsako vrstico je en skupni pozitivni terminal za vseh 8 LED v tej vrstici. To je prikazano na spodnji sliki,
Torej imamo za 8 vrstic 8 skupnih pozitivnih terminalov. Razmislite o prvi vrstici, kot je prikazano na sliki, ima 8 LED od D57 do D64 skupni pozitivni priključek in je označen z 'POZITIV0'. Zdaj, če želimo v prvem REDU matrike zasvetiti eno ali vse LED, potem bi morali napajati PIN0 LED matrice. Podobno, če želimo v kateri koli ROW zasvetiti katero koli LED (ali vse), moramo napajati ustrezen skupni pozitivni priključni zatič te vrstice.
Tega še ni konec in samo puščanje MATRIX ROWS s pozitivno ponudbo ne bo prineslo ničesar. Negativne diode LED moramo ozemljiti, da jih svetijo. Tako se v matriki LED 8x8 vsi negativni terminali LED v katerem koli stolpcu sestavijo v osem skupnih negativnih terminalov, tako kot so vsi negativni terminali v prvem stolpcu povezani skupaj s kodo PIN-A1 (NEGATIVE7). To je prikazano na spodnji sliki:
Na te nožice je treba biti pozoren med spajkanjem LED na Perfboard.
Zdaj, če moramo v prvem stolpcu ozemljiti katero koli LED, bomo ozemljili PIN-A1 (NEGATIVNO7) MATRICE in vse LED v prvem stolpcu. Enak postopek velja za vseh ostalih sedem pogostih negativnih stolpcev.
Od zdaj veste, kako deluje Skupno Pozitivno in Skupno Negativno. Sestavimo jih, da vidimo, kako delujejo skupaj in končni zaslon Circuit for Scrolling 8x8 LED Matrix bo videti takole:
Vožnja z 8x8 LED matrico z uporabo multipleksiranja:
Zdaj recimo, da želimo vklopiti LED57, potem moramo vklopiti PIN0 UNO in ozemljiti PIN-8 UNO. Za vklop LED 57 in LED 50 moramo vklopiti PIN0, PIN1 in ozemljiti PIN8, PIN9. Toda s tem ne boste vklopili samo D57, D50, temveč tudi D49, D58. Da bi se temu izognili, uporabljamo tehniko, imenovano Multiplexing. Podrobno smo že razpravljali o tej Multiplex tehniki v 8x8 LED matriki; pojdite skozi ta članek za podrobno razlago. Tu na kratko razlagamo Multipleksiranje.
Človeško oko ne more zajeti frekvence več kot 30 HZ. To je, če se LED dioda neprekinjeno vklaplja in izklaplja s hitrostjo 30Hz ali več. Oko vidi LED kot neprekinjeno vklopljeno. Vendar temu ni tako in LED se bo dejansko nenehno VKLOPILA in IZKLOPILA. Ta tehnika se imenuje multipleksiranje.
Recimo, da želimo na primer vklopiti samo LED57 in LED50, ne da bi vklopili D49 in D58. Trik je, da bomo najprej napajali prvo vrstico, da vklopi LED57 in počakamo 1mSEC, nato pa jo izklopimo. Nato bomo napajali drugo vrstico, da vklopi LED50, in počakali 1mSEC, nato pa jo izklopili. Cikel poteka neprekinjeno z visoko frekvenco in LED57 in LED50 se hitro vklapljata in izklapljata, obe LED pa se zdita neprekinjeno vklopljeni za naše oko. Pomeni, da napajamo samo eno vrstico naenkrat, kar izključuje možnosti vklopa drugih LED v drugih vrsticah. S to tehniko bomo uporabili vse znake.
Obstaja tudi knjižnica LedControlMS.h, ki skrbi za vso to zapletenost multipleksiranja, kjer morate samo vnesti znak ali številko, ki jo želite natisniti na LED-matriko, za več podrobnosti preverite to matriko Arduino LED s projektom MAX7219.
Pojasnilo programiranja:
V naši kodi smo za vsak znak zapisali decimalno vrednost in te vrednosti programirali v Arduino. Program je zapisal, da te vrednosti vsakih 0,2 sekunde premakne v naslednjo vrstico, to bo videti kot pomikanje znakov navzgor, zelo preprosto.
Če želite spremeniti znake, ki bodo prikazani, samo zamenjajte vrednost v matriki char ALPHA glede na spodaj navedene vrednosti znakov, 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,99,107,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
Tako kot če želite prikazati DAD na matriki LED, nato najprej nadomestite vrednosti Characters v matriki char ALPHA tako, da na zgornji seznam vnesete vrednosti za znake D, A in D:
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};
Skupne vrednosti so zdaj 5 * 10 = 50 vrednosti, torej
Zamenjaj, za (int x = 0; x <142; x ++) // 150-8 (za ustavitev prelivanja) {…….. Z, za (int x = 0; x <42; x ++) // 50-8 (da se ustavi prelivanje) {……..
Torej morate samo spremeniti številko.
S tem ste končali s programiranjem in zdaj lahko premikate poljubno besedilo na matriki LED 8x8, spodaj preverite celotno kodo z demonstracijskim videom.