Pilotare normalmente otto display a LED non è proprio facile. Quello proposto nell’articolo, visibile in figura 1, è un modulo molto sofisticato che prevede ben otto display a 7 segmenti e relativo controller MAX7219. Con esso non è solamente possibile visualizzare i numeri (e alcune lettere dell’alfabeto) ma si può anche scegliere la modalità di funzionamento, il grado di luminosità dei segmenti e altre interessanti caratteristiche. Inoltre può essere collegato in cascata a ulteriori moduli, aumentandone le possibilità di utilizzo.
Le connessioni
Il cablaggio del modulo è molto semplice e sono necessarie solo cinque connessioni, come risulta visibile nello schema elettrico di cui in figura 2. In particolare:
- Il piedino VCC del display è collegato ai 5V di Arduino
- Il piedino GND del display è collegato al GND di Arduino
- Il piedino DIN del display è collegato al pin 11 di Arduino (SPI MOSI)
- Il piedino CS del display è collegato al pin 10 di Arduino. Esso può essere anche cambiato
- prevedendolo del firmware
- Il piedino CLK del display è collegato al pin 13 di Arduino (SCK)
Lo sketch per la visualizzazione di un numero
La visualizzazione di dati sul display non è un compito semplicissimo, ma basta capire la filosofia per poter effettuare qualsiasi tipo di operazione, in tutta tranquillità. Il primo esempio prevede la rappresentazione dei numeri 01234567, come mostrato in figura 3.
Lo sketch, proposto in figura 4, è abbastanza intuitivo. La funzione setup() si occupa di configurare il display, inviando alcuni comandi, riscontrabili anche nel datasheet del modulo. La funzione loop(), come si può comprendere visualizza, una dopo l’altra, le cifre desiderate. Tutto il programma ruota attorno alla funzione sendCommand() che accetta, come argomenti, i seguenti due parametri:
- int command: è il comando (o indirizzo) numerico
- int value: è il valore inviato
A basso livello, la comunicazione SPI per il trattamento dei dati avviene secondo i seguenti passi:
- inizialmente il pin CS del display deve essere posto a livello logico BASSO
- si invia il comando (o indirizzo), tramite la funzione SPI.transfer()
- si invia il valore, sempre tramite la funzione SPI.transfer()
- il pin CS del display deve essere posto, alla fine, a livello logico ALTO
Alcuni esempi di comandi
Per facilitare la comprensione di quanto sopra detto, proponiamo alcuni esempi di utilizzo della funzione sendCommand.
- sendCommand(10,4); // Setta Media intensita’ (tra 0-15)
- sendCommand(8, 0); // Scrive “0” al primo posto (si trova tutto a sx)
- sendCommand(2, 15); // Cancella il secondo display
Conto alla rovescia
Se si vuole implementare un semplice conto alla rovescia a una cifra, da 9 a 0, si può adottare il listato proposto in figura 5. Per un numero maggiore di cifre occorre isolarle singolarmente e inviarle alla rispettiva funzione di visualizzazione.
Per chi inizia ora e voglia dotarsi di tutto l’occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.