Am creat o serie de tutoriale Raspberry Pi, în care am acoperit interfațarea Raspberry Pi cu toate componentele de bază, cum ar fi LED, LCD, buton, motor DC, Servo Motor, Stepper Motor, ADC, shift Register etc. a publicat câteva proiecte Raspberry Pi simple pentru începători, împreună cu câteva proiecte IoT bune. Astăzi, în continuarea acestor tutoriale, vom controla modulul 8x8 LED Matrix de la Raspberry Pi. Vom scrie un program python pentru a afișa caractere pe modulul matrice.
De asemenea, verificați interfațarea matricei LED 8x8 cu Arduino și matricea LED cu microcontorller AVR.
Componente necesare:
Aici folosim Raspberry Pi 2 Model B cu Raspbian Jessie OS. Toate cerințele de bază privind hardware-ul și software-ul sunt discutate anterior, le puteți căuta în Introducere Raspberry Pi și LED-ul Raspberry PI Clipește pentru a începe, în afară de asta avem nevoie:
- Placă Raspberry Pi
- Alimentare (5v)
- Condensator 1000uF (conectat la sursa de alimentare)
- Rezistor 1KΩ (8 bucăți)
Modul de matrice LED 8x8:
Un modul de matrice LED 8 * 8 conține 64 de LED-uri (diode emițătoare de lumină) care sunt aranjate sub formă de matrice, de unde denumirea este matrice LED. Aceste module compacte sunt disponibile în diferite dimensiuni și multe culori. Le puteți alege în funcție de comoditate. Configurația PIN a modulului este așa cum se arată în imagine. Rețineți că pinouturile modulului nu sunt în ordine, astfel încât codurile PIN trebuie numerotate exact așa cum se arată în imagine pentru a evita erorile.
Există 8 + 8 = 16 terminale comune în modulul LED Matrix. Peste ele, avem 8 terminale pozitive comune și 8 terminale negative comune, sub formă de 8 rânduri și 8 coloane, pentru conectarea a 64 de LED-uri sub formă de matrice. Dacă modulul ar fi desenat sub formă de schemă de circuite, vom avea o imagine așa cum se arată mai jos:
Deci, pentru 8 rânduri, avem 8 terminale pozitive comune (9, 14, 8, 12, 17, 2, 5). Luați în considerare primul rând, LED-urile de la D1 la D8 au un terminal pozitiv comun și pinul este scos la PIN9 al modulului LED Matrix. Când dorim ca unul sau toate LED-urile dintr-un rând să fie aprinse, pinul corespunzător al MODULULUI LED ar trebui să fie alimentat cu + 3.3v.
Similar cu terminalele pozitive comune, avem 8 terminale negative comune ca coloane (13, 3, 4, 10, 6, 11, 15, 16). Pentru împământarea oricărui LED din orice coloană, respectivul terminal negativ comun care urmează să fie împământat.
Explicația circuitului:
Conexiunile care se fac între Raspberry Pi și modulul cu matrice LED sunt prezentate în tabelul de mai jos.
Modul LED Matrix Pin nr. |
Funcţie |
Raspberry Pi GPIO Pin Nr. |
13 |
POZITIV0 |
GPIO12 |
3 |
POZITIV1 |
GPIO22 |
4 |
POZITIV2 |
GPIO27 |
10 |
POZITIV3 |
GPIO25 |
6 |
POZITIV4 |
GPIO17 |
11 |
POZITIV5 |
GPIO24 |
15 |
POZITIV6 |
GPIO23 |
16 |
POZITIV7 |
GPIO18 |
9 |
NEGATIV0 |
GPIO21 |
14 |
NEGATIV1 |
GPIO20 |
8 |
NEGATIV2 |
GPIO26 |
12 |
NEGATIV3 |
GPIO16 |
1 |
NEGATIV4 |
GPIO19 |
7 |
NEGATIV5 |
GPIO13 |
2 |
NEGATIV6 |
GPIO6 |
5 |
NEGATIV7 |
GPIO5 |
Iată schema circuitului final pentru interfațarea matricei LED 8x8 cu Raspberry Pi:
Explicație de lucru:
Aici vom folosi tehnica de multiplexare pentru a afișa caractere pe modulul 8x8 LED Matrix. Deci, să discutăm în detaliu despre această multiplexare. Spuneți dacă dorim să aprindem LED-ul D10 în matrice, trebuie să alimentăm PIN14-ul modulului și să punem la sol PIN3-ul modulului. Cu acest LED D10 se va aprinde așa cum se arată în figura de mai jos. Acest lucru ar trebui să fie verificat mai întâi pentru ca MATRIX să știe că totul este în ordine.
Acum, spuneți dacă dorim să pornim D1, trebuie să alimentăm PIN9 al matricei și să punem la sol PIN13. Cu acel LED D1 va străluci. Direcția curentă în acest caz este prezentată în figura de mai jos.
Acum, pentru partea dificilă, considerăm că dorim să pornim atât D1, cât și D10 în același timp. Deci, ar trebui să alimentăm atât PIN9, PIN14, cât și la sol atât PIN13, PIN3. Aceasta va porni LED-urile D1 și D10, dar odată cu aceasta va aprinde și LED-urile D2 și D9. Este pentru că împărtășesc terminale comune. Deci, dacă vrem să aprindem LED-urile de-a lungul diagonalei, vom fi obligați să aprindem toate LED-urile de-a lungul drumului. Acest lucru este prezentat în figura de mai jos:
Pentru a evita această problemă, folosim o tehnică numită Multiplexare. De asemenea, am discutat despre această tehnică de multiplexare în timp ce interfațam matricea LED 8x8 cu AVR, aici explicăm din nou. Aceeași tehnică de multiplexare este utilizată și în Scrolling Text pe matrice LED 8x8 cu Arduino și cu microcontroler AVR.
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 LED-urile D1 și LED-urile D10 fără a porni D2 și D9. Trucul este că vom furniza mai întâi energie doar LED-ului D1 folosind PIN 9 și 13 și vom aștepta 1mSEC, apoi îl vom opri. Apoi vom furniza alimentarea LED-ului D10 folosind codurile PIN 14 și 3 și așteptăm 1mSEC, apoi îl vom opri. Ciclul funcționează continuu cu frecvență înaltă, iar D1 și D10 vor porni și opri rapid și ambele LED-uri vor apărea continuu în ochii noștri. Înseamnă că furnizăm energie unui singur rând (LED) la un moment dat, eliminând șansele de a porni alte LED-uri în alte rânduri. Vom folosi această tehnică pentru a arăta toate personajele.
O putem înțelege în continuare printr-un singur exemplu, cum ar fi dacă dorim să afișăm „A” pe matrice, așa cum se arată mai jos:
După cum am spus, vom porni un rând într-o clipă, La t = 0m SEC, PIN09 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 sunt împământați (alți pini COLUMN sunt HIGH la acest moment)
La t = 1m SEC, PIN14 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sunt împământați (alți pini COLUMN sunt HIGH la acest moment)
La t = 2m SEC, PIN08 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN15, PIN16 sunt împământați (alți pini COLUMN sunt HIGH la acest moment)
La t = 3m SEC, PIN12 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN15, PIN16 sunt împământați (alți pini COLUMN sunt HIGH la acest moment)
La t = 4m SEC, PIN01 este setat HIGH (alte pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sunt împământate (alte pini COLUMN sunt HIGH la acest moment)
La t = 5m SEC, PIN07 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sunt conectați la pământ (alți pini COLUMN sunt HIGH la acest moment)
La t = 6m SEC, PIN02 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN15, PIN16 sunt împământați (alți pini COLUMN sunt HIGH la acest moment)
La t = 7m SEC, PIN05 este setat HIGH (alți pini ROW sunt LOW în acest moment) în acest moment, PIN13, PIN3, PIN15, PIN16 sunt împământați (alți pini COLUMN sunt HIGH la acest moment)
La această viteză, afișajul va fi văzut ca afișând continuu caracterul „A” așa cum se arată în figură.
Programul Python pentru afișarea caracterelor pe LED Matrix folosind Raspberry Pi este prezentat mai jos. Programul este bine explicat prin comentarii. Valorile portului pentru fiecare caracter sunt date în program. Puteți afișa orice caractere doriți doar schimbând valorile „pinp” în „pentru bucle” din programul dat. De asemenea, verificați videoclipul demonstrativ de mai jos.