Abbiamo creato una serie di tutorial Raspberry Pi, in cui abbiamo coperto l'interfacciamento di Raspberry Pi con tutti i componenti di base come LED, LCD, pulsanti, motore CC, servomotore, motore passo-passo, ADC, registro di scorrimento, ecc. ha pubblicato alcuni semplici progetti Raspberry Pi per principianti, insieme ad alcuni buoni progetti IoT. Oggi, in continuazione di questi tutorial, controlleremo il modulo a matrice di LED 8x8 di Raspberry Pi. Scriveremo un programma python per mostrare i caratteri sul modulo matrice.
Controlla anche Interfacing 8x8 LED Matrix con Arduino e LED Matrix con AVR Microcontorller.
Componenti richiesti:
Qui stiamo usando Raspberry Pi 2 Model B con Raspbian Jessie OS. Tutti i requisiti hardware e software di base sono stati discussi in precedenza, puoi cercarli nell'introduzione di Raspberry Pi e LED Raspberry PI lampeggiante per iniziare, oltre a quello di cui abbiamo bisogno:
- Scheda Raspberry Pi
- Alimentazione (5v)
- Condensatore 1000uF (collegato attraverso l'alimentazione)
- Resistenza da 1KΩ (8 pezzi)
Modulo matrice LED 8x8:
Un modulo matrice LED 8 * 8 contiene 64 LED (diodi emettitori di luce) disposti sotto forma di matrice, da cui il nome è matrice LED. Questi moduli compatti sono disponibili in diverse dimensioni e molti colori. Si possono scegliere per comodità. La configurazione del PIN del modulo è come mostrato in figura. Tieni presente che le piedinature del modulo non sono in ordine, quindi i PIN devono essere numerati esattamente come mostrato in figura per evitare errori.
Ci sono 8 + 8 = 16 terminali comuni nel modulo LED Matrix. Su di essi abbiamo 8 terminali positivi comuni e 8 terminali negativi comuni, sotto forma di 8 righe e 8 colonne, per il collegamento di 64 LED in forma di matrice. Se il modulo dovesse essere disegnato sotto forma di schema elettrico avremo un'immagine come mostrato di seguito:
Quindi per 8 righe, abbiamo 8 terminali positivi comuni (9, 14, 8, 12, 17, 2, 5). Si consideri la prima riga, i LED da D1 a D8 hanno un terminale positivo comune e il pin è portato fuori al PIN9 del modulo LED Matrix. Quando vogliamo che uno o tutti i LED in una RIGA siano accesi, il pin corrispondente del MODULO LED deve essere alimentato con + 3.3v.
Simile ai terminali positivi comuni, abbiamo 8 terminali negativi comuni come colonne (13, 3, 4, 10, 6, 11, 15, 16). Per la messa a terra di qualsiasi LED in qualsiasi colonna, il rispettivo terminale negativo comune deve essere messo a terra.
Spiegazione del circuito:
Le connessioni che vengono effettuate tra Raspberry Pi e il modulo a matrice di LED sono mostrate nella tabella sottostante.
Modulo a matrice di LED Pin no. |
Funzione |
N. pin GPIO Raspberry Pi |
13 |
POSITIVO 0 |
GPIO12 |
3 |
POSITIVO 1 |
GPIO22 |
4 |
POSITIVO 2 |
GPIO27 |
10 |
POSITIVO 3 |
GPIO25 |
6 |
POSITIVO 4 |
GPIO17 |
11 |
POSITIVO 5 |
GPIO24 |
15 |
POSITIVO 6 |
GPIO23 |
16 |
POSITIVO 7 |
GPIO18 |
9 |
NEGATIVO 0 |
GPIO21 |
14 |
NEGATIVO 1 |
GPIO20 |
8 |
NEGATIVO 2 |
GPIO26 |
12 |
NEGATIVO 3 |
GPIO16 |
1 |
NEGATIVO 4 |
GPIO19 |
7 |
NEGATIVO 5 |
GPIO13 |
2 |
NEGATIVO 6 |
GPIO6 |
5 |
NEGATIVO 7 |
GPIO5 |
Ecco lo schema del circuito finale per l' interfacciamento della matrice LED 8x8 con Raspberry Pi:
Spiegazione di lavoro:
Qui useremo la tecnica del multiplexing per mostrare i caratteri sul modulo a matrice di LED 8x8. Quindi parliamo di questo multiplexing in dettaglio. Diciamo che se vogliamo accendere il LED D10 nella matrice, dobbiamo alimentare il PIN14 del modulo e mettere a terra il PIN3 del modulo. Con questo LED D10 si accenderà come mostrato nella figura sottostante. Questo dovrebbe anche essere controllato prima affinché MATRIX sappia che tutto è in ordine.
Ora, diciamo che se vogliamo attivare D1, dobbiamo alimentare il PIN9 della matrice e mettere a terra il PIN13. Con quel LED D1 si illuminerà. La direzione corrente in questo caso è mostrata nella figura sottostante.
Ora, per la parte difficile, considera che vogliamo attivare sia D1 che D10 contemporaneamente. Quindi dovremmo alimentare sia PIN9, PIN14 e mettere a terra entrambi PIN13, PIN3. Questo accenderà i LED D1 e D10, ma insieme a ciò accenderà anche i LED D2 e D9. È perché condividono terminali comuni. Quindi se vogliamo accendere i led lungo la diagonale, saremo costretti ad accendere tutti i led lungo il percorso. Questo è mostrato nella figura seguente:
Per evitare questo problema, utilizziamo una tecnica chiamata Multiplexing. Abbiamo anche discusso di questa tecnica di multiplexing durante l'interfacciamento della matrice LED 8x8 con AVR, qui stiamo spiegando di nuovo. Questa stessa tecnica di multiplexing viene utilizzata anche nello scorrimento del testo su matrice LED 8x8 con Arduino e con microcontrollore AVR.
L'occhio umano non può catturare una frequenza superiore a 30 HZ. Cioè se un LED si accende e si spegne continuamente a una velocità di 30 Hz o più. L'occhio vede il LED sempre acceso. Tuttavia questo non è il caso e il LED si accenderà e spegnerà costantemente. Questa tecnica è chiamata multiplexing.
Supponiamo ad esempio di voler accendere solo il LED D1 e il LED D10 senza accendere D2 e D9. Il trucco è che prima forniremo alimentazione solo al LED D1 utilizzando i PIN 9 e 13 e aspetteremo 1 mSEC, quindi lo spegneremo. Quindi forniremo alimentazione al LED D10 utilizzando i PIN 14 e 3 e attenderemo 1 mSEC, quindi lo spegneremo. Il ciclo procede continuamente con alta frequenza e D1 e D10 si accendono e si spengono rapidamente ed entrambi i LED appariranno continuamente accesi ai nostri occhi. Significa che stiamo fornendo alimentazione solo a una fila (LED) alla volta, eliminando le possibilità di accendere altri LED in altre file. Useremo questa tecnica per mostrare tutti i personaggi.
Possiamo comprenderlo ulteriormente con un esempio, come se volessimo visualizzare "A" sulla matrice, come mostrato di seguito:
Come detto accenderemo una riga in un istante, A t = 0m SEC, PIN09 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 1m SEC, PIN14 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 2m SEC, PIN08 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 3m SEC, PIN12 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 4m SEC, PIN01 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sono a massa (gli altri pin COLUMN sono ALTI in questo momento)
A t = 5m SEC, PIN07 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 6m SEC, PIN02 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 7m SEC, PIN05 è impostato su ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A questa velocità, il display mostrerà continuamente il carattere "A" come mostrato in figura.
Di seguito è riportato il programma Python per mostrare i caratteri sulla matrice LED utilizzando Raspberry Pi. Il programma è ben spiegato dai commenti. I valori delle porte per ogni carattere sono forniti nel programma. Puoi mostrare i caratteri che vuoi semplicemente cambiando i valori di "pinp" nei "cicli for" nel programma dato. Controlla anche il video dimostrativo di seguito.