I denne vejledning skal vi designe en 8x8 LED Matrix-rulleskærm ved hjælp af Arduino Uno, som viser rullealfabet.
8x8 LED-matrix indeholder 64 LED'er (lysemitterende dioder), som er arrangeret i form af en matrix, hvorfor navnet er LED-matrix. Vi skal fremstille denne matrix ved at lodde disse 64 lysdioder på perfboard eller DOT PCB. Lysdioderne kan have enhver farve, vælg de, der er tilgængelige med dig. Derefter skriver vi et program til Arduino til styring af disse 64 LED-matrixer. UNO styrer ifølge programmet passende lysdioder til at vise tegn på rullende måde.
Nødvendige komponenter:
- Arduino Uno
- 64 lysdioder
- Perfboard med andre loddeværktøjer
- 1KΩ modstand (8 stykker)
- Strømforsyning (5v)
Kredsløb og arbejdsforklaring:
Der er 64 lysdioder arrangeret i en matrixform. Så vi har 8 kolonner og 8 rækker. Over disse rækker og kolonner er alle de positive terminaler i en række samlet. For hver række er der en fælles positiv terminal for alle 8 LED'er i den række. Det er vist i nedenstående figur,
Så i 8 rækker har vi 8 fælles positive terminaler. Overvej den første række, som det ses i figuren, 8 lysdioder fra D57 til D64 har en fælles positiv terminal og er betegnet med 'POSITIVE0'. Hvis vi nu vil have en eller alle lysdioder i den første række i matrixen, skal vi give PIN0 til LED-matrixen. Ligeledes hvis vi vil tænde en LED (eller alle) i en hvilken som helst ROW, er vi nødt til at tænde for den tilsvarende Common Positive Terminal Pin i den pågældende række.
Dette er ikke overstået endnu, og bare at lade MATRIX ROWS have en positiv forsyning vil ikke give noget. Vi er nødt til at jordforbinde lysdiodernes negativer for at tænde dem. Så i 8x8 LED-matrix samles alle de negative terminaler på LED'erne i en hvilken som helst kolonne for at danne otte fælles negative terminaler, ligesom alle de negative terminaler i første kolonne er forbundet sammen med PIN-A1 (NEGATIVE7). Dette er vist i nedenstående figur:
Man skal være opmærksom på disse ben, mens man lodder lysdioderne på Perfboard.
Hvis vi nu har brug for at jorde en LED i den første kolonne, vil vi jordforbinde PIN-A1 (NEGATIVE7) i MATRIX, og det vil jorde alle lysdioderne i den første kolonne. Den samme proces gælder for alle de andre syv almindelige negative kolonner.
Siden nu ved du, hvordan Common Positive og Common Negative fungerer. Lad os sætte dem sammen for at se, hvordan de arbejder sammen, og det endelige kredsløb til at rulle 8x8 LED Matrix-skærm vil se sådan ud:
Kørsel af 8x8 LED-matrix ved hjælp af multiplexing:
Lad os nu sige, at vi vil tænde LED57, så er vi nødt til at tænde PIN0 for UNO og jorde PIN-8 for UNO. Nu for at tænde både LED57 og LED50 er vi nødt til at tænde PIN0, PIN1 og jorde PIN8, PIN9. Men at gøre dette vil ikke kun tænde D57, D50 men også D49, D58. For at undgå at vi bruger en teknik kaldet Multiplexing. Vi har allerede diskuteret denne Multiplex-teknik i 8x8 LED Matrix i detaljer; gå gennem denne artikel for detaljeret forklaring. Her forklarer vi kortvarigt Multiplexing.
Det menneskelige øje kan ikke fange en frekvens på mere end 30 Hz. Det er, hvis en LED tændes og slukkes kontinuerligt med en hastighed på 30 Hz eller mere. Øjet ser lysdioden kontinuerligt TÆNDT. Dette er imidlertid ikke tilfældet, og LED vil faktisk tænde og slukke konstant. Denne teknik kaldes Multiplexing.
Lad os for eksempel sige, at vi kun vil tænde LED57 og LED50 uden at tænde D49 og D58. Trick er, vi leverer først strøm til første række til at tænde LED57 og vente på 1mSEC, og derefter slukker vi den. Derefter giver vi strøm til anden række for at tænde LED50 og vente på 1mSEC og derefter slukke for den. Cyklussen går kontinuerligt med høj frekvens, og LED57 & LED50 tændes og slukkes hurtigt, og begge lysdioder ser ud til at være kontinuerligt TÆND for vores øje. Betyder, at vi kun leverer strøm til den ene række ad gangen, hvilket eliminerer chancerne for at tænde andre lysdioder i andre rækker. Vi bruger denne teknik til at vise alle tegn.
Der er også et bibliotek kaldet LedControlMS.h for at tage sig af al denne kompleksitet af multiplexing, hvor du kun behøver at indtaste det tegn eller nummer, som du vil udskrive på LED-matrix, skal du kontrollere denne Arduino LED-matrix med MAX7219-projekt for at få flere detaljer.
Programmeringsforklaring:
I vores kode har vi skrevet decimalværdi for hvert tegn og programmeret disse værdier i Arduino. Programmet har skrevet for at skifte disse værdier til næste række for hver 0,2 sek. Dette ses som rulning af tegn opad, det er meget simpelt.
For at ændre de tegn, der skal vises, skal du bare erstatte værdien i char ALPHA- arrayet i overensstemmelse med de tegnværdier, der er angivet nedenfor, 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
Ligesom hvis du vil vise DAD på LED-matrixen, skal du først udskifte tegnværdierne i char ALPHA- arrayet ved at sætte værdier for tegn D, A og D fra ovenstående liste:
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};
Samlede værdier er nu 5 * 10 = 50 værdier, altså
Udskift for (int x = 0; x <142; x ++) // 150-8 (for at stoppe overløb) {…….. Med, for (int x = 0; x <42; x ++) // 50-8 (for at stoppe overløb) {……..
Så du skal bare ændre antallet.
Med denne du har gjort programmeringen og nu kan du Rul nogen tekst på 8x8 LED Matrix, skal du kontrollere Fuld koden nedenfor med en demonstration video.