Corso base di Arduino: pilotare un display SPI

Vediamo come usare, con Arduino, il display a basso costo a LED a 8 cifre, con protocollo SPI. Esso utilizza il controller MAX7219. Il suo costo è veramente basso, in relazione alla sua potenza e flessibilità di utilizzo.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

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.

figura 1 il display
Figura 1: il display

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)

figura 2 cablaggio
Figura 2: le connessioni elettriche tra Arduino e il display

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.

figura 3 le cifre 01234567
Figura 3: il display mostra le cifre 01234567

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

figura 4 lo sketch 01234567
Figura 4: sketch per la visualizzazione del numero 01234567

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.

figura 5 conto alla rovescia
Figura 5: Lo sketch per il conto alla rovescia

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.