Come usare un display TM1638 a 4 cifre. Guarda il video
Il modulo TM1638 è un componente versatile che può visualizzare numeri e caratteri ed essere controllato tramite pulsanti. In questo tutorial imparerai come impostare e programmare questo display per mostrare vari valori, inclusi numeri e valori esadecimali. Alla fine di questa guida avrai un display completamente funzionante che risponde alla pressione dei pulsanti e modifica ciò che viene mostrato in base all'input dell'utente. Puoi vedere una dimostrazione nel video (al minuto 00:00).

L'hardware spiegato
Il modulo TM1638 è progettato per visualizzare informazioni e ricevere input dai pulsanti. È composto da un display LED a 8 cifre e da una matrice di 16 pulsanti. Ogni pulsante può essere programmato per attivare funzioni diverse, consentendo un'interfaccia intuitiva. Il modulo si collega a un microcontrollore tramite tre pin: un pin di ingresso/uscita dati, un pin di clock e un pin di strobe. Questa configurazione consente una comunicazione efficiente tra il microcontrollore e il TM1638. Il circuito integrato TM1638 gestisce il display e gli ingressi dei pulsanti. Utilizza un protocollo di comunicazione seriale che gli permette di controllare il display e leggere lo stato dei pulsanti con un cablaggio minimo. Ogni pressione di un pulsante invia un segnale al microcontrollore, che può quindi eseguire azioni specifiche in base al pulsante premuto.
Dettagli della scheda tecnica
| Produttore | QYF |
|---|---|
| Numero di parte | TM1638 |
| Tensione logica/IO | 5 V |
| Tensione di alimentazione | 5 V |
| Corrente di uscita (per segmento) | 20 mA |
| Corrente di picco (totale) | 120 mA |
| Soglie logiche di ingresso | 0.2 V (basso) / 0.8 V (alto) |
| Pacchetto | DIP-28 |
- Assicurarsi che la tensione di alimentazione sia stabile a 5 V per prestazioni ottimali.
- Limitare la corrente di uscita per evitare danni al display.
- Usa resistenze per evitare correnti eccessive attraverso i LED.
- Eseguire il debounce degli ingressi dei pulsanti via software per evitare attivazioni multiple.
- Mantieni i cablaggi corti per ridurre il rumore nella comunicazione.
Istruzioni di cablaggio
Per collegare il modulo TM1638, lo collegherai al tuo microcontrollore come segue:

VCCsul TM1638 all'alimentazione a 5V del tuo microcontrollore.
- Collega ilGNDCollega il pin del TM1638 alla massa del tuo microcontrollore.
- Collega ilSTBpin (spesso etichettato inSTROBE) al pin digitale 5 del tuo microcontrollore.
- Collega ilCLKpin (clock) al pin digitale 2 del tuo microcontrollore.
- Collega ilDIOCollega il pin (ingresso/uscita dati) al pin digitale 3 del tuo microcontrollore.
Assicurati di controllare le connessioni prima di alimentare il sistema. Se hai seguito il video (al minuto 02:30), non dovresti avere problemi con il cablaggio.Esempi di codice e guida passo passo
Il seguente frammento di codice inizializza il modulo TM1638 e configura il display. L'identificatoremodulerappresenta l'istanza TM1638 creata per interagire con il display.
TM1638QYF module(DIO, CLK, STB);
void setup()
{
module.setupDisplay(true, 7);
}In questo frammento di codice, il display è impostato per mostrare la luminosità massima (7). La parte successiva del codice gestisce le pressioni dei pulsanti e modifica il display in base al pulsante premuto.
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
if (buttons != 0) {
*mode = buttons >> 1;
}
switch (*mode) {
case 0: module->setDisplayToString("press 1"); break;
// other cases follow
}
}Questa funzione verifica quale pulsante è premuto usandogetButtons()e aggiorna di conseguenza il display. La variabilemodedetermina quale testo viene visualizzato in base al pulsante premuto. Infine, il ciclo principale aggiorna continuamente il display.
void loop()
{
update(&module, &mode);
}Questo ciclo chiama ilupdatefunzione, assicurando che la visualizzazione venga aggiornata in base all'interazione dell'utente. Per una comprensione completa, consultare il codice completo caricato sotto l'articolo.
Dimostrazione / Cosa aspettarsi
Una volta che hai tutto cablato e il codice caricato, premendo i pulsanti il testo sul display dovrebbe cambiare di conseguenza. Ad esempio, premendo il pulsante 1 verrà visualizzato "premi 1", mentre premendo il pulsante 2 cambierà in "premi 2". Se ci sono problemi, ricontrolla il cablaggio e assicurati che vengano usati i pin corretti come indicato. Guardare il video (al minuto 05:00) aiuterà anche a confermare che tutto funzioni come previsto.
Marcatori temporali del video
- 00:00- Introduzione
- 02:30- Istruzioni di cablaggio
- 05:00- Spiegazione e dimostrazione del codice
/*
* Questo è il codice Arduino per il display a 8 cifre TM1638, con 16 pulsanti a matrice.
*
* Scritto da Ahmad Nejrabi per il video di Robojax
* Data: 10 dicembre 2017, ad Ajax, Ontario, Canada
* Permesso di condividere questo codice a condizione che questa
* nota sia mantenuta con il codice.
* Dichiarazione di non responsabilità: questo codice è "COSÌ COM'È" e solo per scopi educativi.
*/
#include <TM1638.h>
#include <TM1638QYF.h>
#define STB 5
#define DIO 3
#define CLK 2
TM1638QYF module(DIO, CLK, STB);
word mode;
void setup()
{
module.setupDisplay(true, 7);
mode = 0; // pulsante iniziale zero
}
void update(TM1638QYF* module, word* mode) {
word buttons = module->getButtons();
// pulsante premuto - cambia modalità
if (buttons != 0) {
*mode = buttons >> 1;
if (*mode < 0) {
module->clearDisplay();
delay(100);
}
}
switch (*mode) {
case 0: // S1
module->setDisplayToString("press 1");
break;
case 1: // S2
module->setDisplayToString("press 2");
break;
case 2: // S3
module->setDisplayToString("press 3");
break;
case 4: // S4
module->setDisplayToString("press 4");
break;
case 8: // S5
module->setDisplayToString("press 5");
break;
case 16: // S6
module->setDisplayToString("press 6");
break;
case 32: // S7
module->setDisplayToString("press 7");
break;
case 64: // S8
module->setDisplayToString("press 8");
break;
case 128: // S9
module->setDisplayToString("press 9");
break;
case 256: // S10
module->setDisplayToString("press 10");
break;
case 512: // S11
module->setDisplayToString("press 11");
break;
case 1024: // S12
module->setDisplayToString("press 12");
break;
case 2048: // S13
module->setDisplayToString("press 13");
break;
case 4096: // S14
module->setDisplayToString("press 14");
break;
case 8192: // S15
module->setDisplayToString("press 15");
break;
case 16384: // S16
module->setDisplayToString("robojax");
break;
default: // pulsante sconosciuto
module->setDisplayToString("?????");
break;
}
}
void loop()
{
update(&module, &mode);
}
Cose di cui potresti avere bisogno
-
AmazonTM1638 su Amazonamzn.to
-
AliExpressModulo tastiera TM1638 su AliExpresss.click.aliexpress.com
Risorse e riferimenti
-
EsternoLibreria TM1638 (da GitHub)github.com