Questo modulo e' composto da 4 display a 7 segmenti pilotati dal driver TM1637 (qui il datasheet) monato sul retro del modulo
Il chip TM1637 ha anche la capacita' di leggere gli scan code di un tastierino 4x4, ma non viene trattato in questo post.
Piedinatura
Il modulo ha 4 piedini- VCC: piedino di alimentazione +5V
- GND: piedino di massa
- CLK: piedino di clock
- DIO: piedino di scambio dati seriali tra Arduino ed il TM1637
Come si vede tolti i due piedinio di alimentazione, il modulo si programma con un semplice protocollo seriali a due fili (CLK e DIO).
Programmazione
Qui una breve descrizione (volutamente non completa) sul come programare il modulo. Tutti i dettagli sono contenuti nel datasheet
Leggendo il datasheet (chiunque vuole smanettare con Arduino e i vari componenti elettronici deve imparare a leggere un datasheet :) ) si capisce che il modulo puo' essere programmato con due modalita' differenti di indirizzamento (autoincrementale, fissa) (in questo post ne usiamo solo quella fissa).
Questa figura ci spiega come programmare il display. Piu' precisamente bisogna inviare al modulo 3 comandi ed il dato da visualizzare sul display a 7 segmenti. I tre comandi sono definiti come:
- Data command settings: comando di impostazioni
- Address command settings: comnado di impostazione indirizzo
- Display and control command settings: comando di impostazioni display
Nel datasheet e' definito il formato di ogni singolo comando (ometto ulteriori dettagli dato il target di questo post)
In conclusione per far visualizzare una cifra sul display bisogna inviare questi comandi (valore esadecimale del byte di comando):
- 0x40: write data to display: diciamo al modulo che vogliamo scrivere una cifra su un display a 7 segmenti
- 0xC0: indirizzo (0 - 3 siccome ci sono 4 display) del display che vogliamo usare
- 0x88: impostazione della luminosita'
Circuito
Vediamo ora come collegare il modulo Digital Tube ad Arduino
- piedino VCC: va collegato al piedino 5V di Arduino
- piedino GND: va collegato al piedino GND di Arduino
- piedino CLK: va collegato al pin 7 di Arduino
- piedino DIO: va collegato al pin 6 di Arduino
I piedini CLK e DIO possono essere collegati a qualsiasi pin digitale di Arduino, ma questo post usa il 6 ed il 7.
Codice Scratch
Ok ora che abbiamo capito come programmare e collegare il modulo digital tube ad Arduino vediamo il codice Scratch di prova
Il codice implementa il protocollo seriale descritto nel datasheet.
Il blocco creaFont e' usato per definire una tabella di mapping tra i valori numerici da 0 - 9 ed il relativo valore numerico da passare al modulo.
In altre parole i 7 segmenti sono pilotati dal vaore di un bit all'interno di un byte. Quindi andando a mettere a 0 o a 1 specifici bit si dice al modulo di accendere o spegnere il display.
In questo modo si possono far visualizzare al display le 10 cifre ed anche altri caratteri
I segmenti dal A a G, sono rappresentati in questo modo in uun byte (A = LSB)
0gfedcba
Quindi per esempio la cifra 1 si visualizza accendendo il segment b ed il segmento c e spegnendo tutti gli altri segmenti.
Quindi scrivendo in binario otteniamo 00000110 che in deciamale e' 6.
I blocchi sequenzaStart e sequenzaStop sono usati per impostare particolari sequenze di valori sui piedini CLK e DIO in modo da rispettare ed implementare il protocollo descritto.
Il blocco scriviByte accetta un valore in ingresso ed ha il compito di inviare il byte passato in ingresso (bit per bit) al modulo
Il blocco displayCifra accetta due valore in ingresso:
- l'indirizzo [0-3] del display da usare (cifra)
- il valore numerico [0-9] da visualizzare (valore)
Infine nel blocco principale (main) impostiam i valori dei 3 comandi necessari per progammare il modulo.
Dopo creaiamo la tabella dei font ed impostiamo la luminosita' (da 0 - a 7).
Assegniamo i pin di CLK e DIO ai pin di Arduino (6 e 7) e li impostiamo come Output.
A questo punto possiamo chiamare il blocco displayCifra per far apparire sul display selezionato la cifra voluta
Buon divertimento e sperimentate a visualizzare altri caratteri.