În acest tutorial vom proiecta un afișaj cu defilare cu matrice LED de 8x8 folosind Arduino Uno, care va afișa alfabete de defilare.
8x8 LED Matrix conține 64 de LED-uri (diode emițătoare de lumină) care sunt aranjate sub formă de matrice, de unde și numele este matrice LED. Vom realiza această Matrix lipind aceste 64 de LED-uri pe placa de bord sau PCB DOT. LED-urile pot fi de orice culoare, alegeți-le pe cele disponibile la dvs. Apoi vom scrie un program pentru Arduino pentru a controla aceste matrice de 64 de LED-uri. UNO, conform programului, alimentează LED-uri adecvate pentru a arăta personajele în mod scrolling.
Componente necesare:
- Arduino Uno
- 64 LED-uri
- Perfboard cu alte instrumente de lipit
- Rezistor 1KΩ (8 bucăți)
- Alimentare (5v)
Circuit și explicație de lucru:
Există 64 de LED-uri dispuse într-o formă matricială. Deci avem 8 coloane și 8 rânduri. Peste acele rânduri și coloane, toate terminalele pozitive dintr-un rând sunt reunite. Pentru fiecare rând, există un terminal comun pozitiv pentru toate cele 8 LED-uri din acel rând. Este prezentat în figura de mai jos,
Deci pentru 8 rânduri avem 8 terminale pozitive comune. Luați în considerare primul rând, așa cum se vede în figură, 8 LED-uri de la D57 la D64 au un terminal pozitiv comun și sunt notate cu „POSITIVE0”. Acum, dacă dorim să aprindem unul sau toate LED-urile în primul rând al matricei, atunci ar trebui să alimentăm PIN-ul LED-ului Matrix. În mod similar, dacă dorim să aprindem orice LED (sau toate) în orice ROW, atunci trebuie să alimentăm Pinul terminalului pozitiv comun corespunzător rândului respectiv.
Acest lucru nu s-a terminat încă și doar lăsarea MATRIX ROWS cu aprovizionare pozitivă nu va produce nimic. Trebuie să punem la sol negativele LED-urilor pentru a le aprinde. Deci, în matricea LED 8x8, toate terminalele negative ale LED-urilor din orice coloană sunt reunite pentru a forma opt terminale negative comune, la fel ca toate terminalele negative din prima coloană sunt conectate împreună la PIN-A1 (NEGATIV7). Acest lucru este prezentat în figura de mai jos:
Ar trebui să acordați atenție acestor ace în timp ce lipiți LED-urile de pe Perfboard.
Acum, dacă trebuie să punem la pământ orice LED din prima coloană, atunci vom pune la pământ PIN-A1 (NEGATIV7) al MATRIX și va pune la pământ toate LED-urile din prima coloană. Același proces este valabil pentru toate celelalte șapte coloane negative comune.
De acum știți cum funcționează Common Positive și Common Negative. Să le reunim pentru a vedea cum funcționează împreună și circuitul final pentru defilarea afișajului matricial LED 8x8 va arăta astfel:
Conducerea matricei LED 8x8 folosind multiplexarea:
Acum să spunem că dorim să aprindem LED57, atunci trebuie să alimentăm PIN0 al UNO și să punem la sol PIN-8 al UNO. Acum, pentru a porni atât LED57, cât și LED50, trebuie să alimentăm PIN0, PIN1 și să împământăm PIN8, PIN9. Dar acest lucru nu va activa doar D57, D50, ci și D49, D58. Pentru a evita acest lucru, folosim o tehnică numită Multiplexare. Am discutat deja această tehnică multiplex în matrice LED 8x8 în detaliu; consultați articolul respectiv pentru explicații detaliate. Aici explicăm pe scurt Multiplexarea.
Ochiul uman nu poate capta o frecvență mai mare de 30 HZ. Asta dacă un LED se aprinde și se stinge continuu la o rată de 30HZ sau mai mult. Ochiul vede LED-ul continuu aprins. Cu toate acestea, acest lucru nu este cazul, iar LED-ul se va aprinde și stinge în mod constant. Această tehnică se numește Multiplexare.
Să presupunem, de exemplu, că dorim să pornim LED57 și LED50 numai fără a activa D49 și D58. Trucul este că vom furniza mai întâi energie primului rând pentru a porni LED57 și așteptați 1mSEC, apoi îl vom opri. Apoi vom furniza curent celui de-al doilea rând pentru a porni LED50 și așteptăm 1mSEC, apoi îl vom opri. Ciclul funcționează continuu cu frecvență înaltă, iar LED57 și LED50 se vor aprinde și opri rapid și ambele LED-uri vor părea să fie aprinse continuu în ochii noștri. Înseamnă că furnizăm energie singurului rând pe rând, eliminând șansele de a porni alte LED-uri în alte rânduri. Vom folosi această tehnică pentru a arăta toate personajele.
Există, de asemenea, o bibliotecă numită LedControlMS.h pentru a avea grijă de această complexitate a multiplexării, unde trebuie doar să introduceți caracterul sau numărul pe care doriți să le imprimați pe matricea LED, verificați această matrice Arduino LED cu proiectul MAX7219 pentru mai multe detalii.
Explicație de programare:
În Codul nostru, am scris valoare zecimală pentru fiecare caracter și am programat aceste valori în Arduino. Programul a scris pentru a muta aceste valori la rândul următor pentru fiecare 0,2 secunde, acest lucru va fi văzut ca o derulare a caracterelor în sus, este foarte simplu.
Pentru a schimba caracterele care trebuie afișate, trebuie doar să înlocuiți valoarea din matricea de caractere ALPHA în funcție de valorile de caractere date mai jos, 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
Ca și dacă doriți să afișați DAD pe matricea LED, apoi înlocuiți mai întâi valorile de caractere din matricea ALPHA de caractere, punând valori pentru caracterele D, A și D din lista de mai sus:
char ALPHA = {0,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,0,0};
Valorile totale sunt acum 5 * 10 = 50 de valori, deci
Înlocuiți, pentru (int x = 0; x <142; x ++) // 150-8 (pentru a opri revărsarea) {…….. Cu, pentru (int x = 0; x <42; x ++) // 50-8 (pentru a opri revărsarea) {……..
Deci, trebuie doar să schimbați numărul.
Cu aceasta ați făcut programarea și acum puteți derula orice text de pe matricea LED 8x8, verificați codul complet de mai jos cu un videoclip demonstrativ.