Progetto 9 Display a Tubo Digitale

1. Descrizione

Questo display a tubo digitale a 4 cifre è un dispositivo utilizzato per visualizzare conteggi o tempo, in grado di mostrare numeri da 0 a 9 e lettere semplici. È composto da quattro tubi digitali, ognuno dei quali ha sette diodi emettitori di luce (LED).

Inoltre, molteplici funzioni possono essere realizzate collegando i loro pin alla scheda di sviluppo Arduino, come la misurazione del tempo e alcuni giochi memorizzati.

2. Principio di Funzionamento

TM1650 utilizza il protocollo IIC e adotta due linee bus (SDA e SCL).

Comando Dati: 0x48.
Questo comando indica al TM1650 di accendere i tubi digitali anziché effettuare la scansione dei tasti.

Comando Display:

In realtà, è un byte di dati con bit diversi che rappresentano funzioni differenti.
bit[6:4]: Imposta la luminosità del LED. Nota che 000 indica la massima luminosità.
bit[3]: Determina se è presente un punto decimale.
bit[0]: Determina se accendere il display.

Accensione del Tubo Digitale
Prendiamo un esempio: luminosità livello 8 senza punto decimale corrisponde a 0x05.
Passaggi: Segnale di inizio — Invia 0x48 — Dispositivo slave riceve — Invia 0x05 — Dispositivo slave riceve — Segnale di fine
Dopo l’accensione, non è necessario inviare ripetutamente 0x48, poiché la funzione del tubo digitale è stata confermata.
Inoltre, la luminosità e i metodi di visualizzazione possono essere elencati con più dati in un unico punto, rendendo il tutto chiaro e salvaspazio.

Spegnimento del Tubo Digitale
Passaggi: Segnale di inizio — Invia 0x48 — Dispositivo slave riceve — Invia 0x00 — Dispositivo slave riceve — Segnale di fine

Visualizzazione Numeri sul Tubo Digitale
Prima diciamo al TM1650 di visualizzare numeri sul tubo predeterminato. Successivamente il numero verrà mostrato. I suoi otto bit corrispondono a otto segmenti, con 1 per accendere e 0 per spegnere. Se ci sono dubbi sulla corrispondenza, è possibile accendere bit per bit in un ciclo.

Ad esempio, quando il bit 1 è acceso e visualizza 8, il dato è 0x68. Se è presente un punto, 8 verrà comunque visualizzato inviando 0x7f.
Passaggi: Segnale di inizio — Invia 0x68 — Dispositivo slave riceve — Invia 0x7f — Dispositivo slave riceve — Segnale di fine
Risultato: 8 viene visualizzato sul Bit 1.

Per comodità, può essere creata una matrice di valori corrispondenti da 0 a 9. Dopo ulteriori miglioramenti, è possibile visualizzare numeri, regolare la luminosità, spostare il punto decimale e i tubi.

3. Schema di Collegamento

4. Codice di Test

/*
  keyestudio ESP32 Inventor Learning Kit 
  Project 9.1 Digital Tube Display 
  http://www.keyestudio.com
*/
#include "TM1650.h"
#define CLK 22    //pins definitions for TM1650 and can be changed to other ports       
#define DIO 21
TM1650 DigitalTube(CLK,DIO);

void setup()
{
  for(char b=0;b<4;b++)
  {
    DigitalTube.clearBit(b);      //DigitalTube.clearBit(0 to 3); Clear bit display.
  }
}

void loop()
{
    DigitalTube.displayFloatNum(9999);   //Values or variables added to the parentheses can be displayed through the digital tube 
}

5. Risultato del Test

Dopo aver collegato i cavi e caricato il codice, il display a tubo digitale mostra “9999”, come mostrato di seguito.

6. Codice Esteso

/*
  keyestudio ESP32 Inventor Learning Kit 
  Project 9.2 Digital Tube Display 
  http://www.keyestudio.com
*/
#include "TM1650.h"
#define CLK 22    //pins definitions for TM1650 and can be changed to other ports       
#define DIO 21
TM1650 DigitalTube(CLK,DIO);

void setup()
{
  for(char b=0;b<4;b++)
  {
    DigitalTube.clearBit(b);      //DigitalTube.clearBit(0 to 3); Clear bit display.
  }
}

void loop()
{
  for(int num=0; num<10000; num++)
  {   //Se num è inferiore a 10000, num aumenterà di 1 ad ogni ciclo
    DigitalTube.displayFloatNum(num);   //Valori o variabili nelle parentesi possono essere visualizzati tramite il tubo digitale
    delay(100);
  }
}

7. Risultato del Test

Dopo aver caricato il codice, il tubo digitale visualizza i numeri da 1 a 9999 tramite il ciclo “for”.