CONTENUTO ►
Il modulo TM1637 di Arduino (display 7 segmenti 4 cifre) consente di visualizzare informazioni da sensori e dispositivi o di costruire un vero e proprio orologio con termometro e sveglia sulla base del modulo. Vediamo come collegare un display a sette segmenti a 4 cifre basato sul driver TM1637 con esempi di programmi per la visualizzazione di informazioni sull’indicatore, tra cui un sensore di luce analogico o un fotoresistenza (sensore di luce KY-018).
Per questa attività sono necessari:
- Arduino Uno / Arduino Nano / Arduino Mega
- modulo display TM1637
- sensore di luce (fotoresistenza)
- cavi di collegamento
- breadboard
- librairia TM1637Display.h
Modulo display TM1637 Arduino datasheet, pinout
Come funziona il modulo display TM1637 a 4 cifre? Il modulo di visualizzazione ha un design il più semplice possibile ed è basato sul driver TM1637 con un’interfaccia bus a due fili. Il display a 7 segmenti a quattro cifre TM1637 non supporta il protocollo i2c standard perché il modulo non ha un indirizzo slave. I produttori offrono modelli di display con LED bianchi, rossi, blu e verdi; le dimensioni del display a sette segmenti sono di 0,36 o 0,56 pollici.
Caratteristiche del display TM1637 Arduino:
- Tensione di alimentazione: 3.3 – 5 V
- Assorbimento di corrente: 0,2 – 80 mA
- Gradazioni di luminosità dell’indicatore: 8
- Interfaccia seriale a due fili (CLK, DIO)
Come collegare modulo display TM1637 Arduino
Il modulo TM1637 è collegato al Arduino tramite quattro pin: due fili sono responsabili dell’alimentazione (5V e GND) e gli altri due fili (CLK e DIO) possono essere collegati a qualsiasi porta digitale. Per lavorare con l’indicatore a quattro cifre TM1637 è necessario installare la libreria TM1637Display.h, che consente di visualizzare sull’indicatore non solo numeri e variabili, informazioni provenienti da sensori, ma anche alcune lettere dell’alfabeto.
Programma Arduino per utilizzare display TM1637 i2c
#include "TM1637Display.h" TM1637Display display(3, 2); // CLC, DIO const uint8_t tire[] = { SEG_G // - }; const uint8_t C[] = { SEG_A | SEG_F | SEG_E | SEG_D // C }; const uint8_t DONE[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O SEG_C | SEG_E | SEG_G, // n SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E }; void setup() { display.setBrightness(4); // luminosità da 0 a 7 display.clear(); display.setSegments(tire, 1, 0); // -___ delay(200); display.setSegments(tire, 1, 1); // _-__ delay(200); display.setSegments(tire, 1, 2); // __-_ delay(200); display.setSegments(tire, 1, 3); // ___- delay(200); display.clear(); display.setSegments(DONE, 4, 0); // dOnE delay(500); display.clear(); } void loop() { display.showNumberDec(1, true, 1, 0); // 1___ delay(500); display.showNumberDec(2, true, 1, 1); // 12__ delay(500); display.showNumberDec(3, true, 1, 2); // 123_ delay(500); display.showNumberDec(4, true, 1, 3); // 1234 delay(500); display.clear(); display.showNumberDec(00, true, 2, 1); // _00_ delay(500); display.setSegments(C, 1, 3); // _00C delay(500); display.clear(); }
Spiegazione del codice per utilizzare display TM1637 i2c Arduino:
- simboli e le lettere vengono creati nel programma utilizzando const uint8_t [] = {};
- funzioni e comandi più dettagliati della libreria TM1637Display.h per il display a 4 cifre sono descritti alla fine di questo post.
Come collegare display TM1637 e sensore di luce
Nel programma seguente verrà visualizzata la variabile c – valori di un sensore di luce analogico (fotoresistenza), ma è possibile utilizzare qualsiasi altro sensore analogico per il microcontrollore Arduino. In questo esempio, sul modulo a 7 segmenti a 4 cifre TM1637 verrà visualizzato un numero a tre cifre e nel quarto segmento verrà visualizzata la lettera latina “c“, che verrà creata nel programma utilizzando un array.
Programma Arduino per modulo TM1637 e fotoresistenza
#include "TM1637Display.h" TM1637Display display(3, 2); // CLC, DIO int c; const uint8_t c[] = { SEG_G | SEG_E | SEG_D // c }; void setup() { Serial.begin(9600); pinMode(A1, INPUT); display.setBrightness(4); // luminosità da 0 a 7 display.clear(); } void loop() { c = analogRead(A1); Serial.println(c); display.showNumberDec(c, false, 3, 0); display.setSegments(c, 1, 3); delay(500); }
Spiegazione del codice per display TM1637 e fotoresistenza Arduino:
- Il codice è stato progettato per un numero di tre cifre; se la variabile avrà un valore di quattro cifre, si dovrà modificare la riga display.showNumberDec(c, false, 4, 0); e rifiutare la visualizzazione del carattere ‘c‘.
Descrizione dei comandi della libreria TM1637Display.h
- setBrightness(brightness, true/false) – la funzione può essere utilizzata in qualsiasi punto del codice e imposta la luminosità del display. È possibile specificare il livello di luminosità da 0 (luminosità minima) a 7 (luminosità massima). Il secondo parametro viene utilizzato per accendere/spegnere il display; falso significa spegnere il display.
- clear() – comando per cancellare il display.
- setSegments(segments, length, position) questa funzione viene utilizzata per impostare singoli segmenti, dove segments è un array (creato all’inizio con const uint8_t). L’argomento length specifica il numero di caratteri dell’array; quando si costruisce il termometro sul TM1637, si utilizzano due caratteri – °C. position – specifica la posizione da cui il carattere deve essere stampato sullo schermo LED.
- showNumberDec(number, leading_zeros, length, position) dove il primo argomento number è il numero che viene visualizzato sul LED. Il secondo argomento leading_zeros serve per abilitare (true) o disabilitare (false) gli zeri iniziali. 10 senza zeri iniziali sarà stampato come __10 e con zeri iniziali come 0010. Il terzo e il quarto argomento della funzione sono gli stessi della funzione precedente.
- showNumberDecEx(number, dots, leading_zeros, length, position) – questa funzione consente di controllare i punti di visualizzazione. Si differenzia dalla funzione showNumberDec solo per l’argomento dots. Per i display con i due punti, è necessario specificare 0b01000000 per attivare i due punti sul display e 0b00000000 per disattivarli.
Conclusione. Il modulo display TM1637 con i due punti al centro è la soluzione più semplice per creare un cronometro o un orologio in tempo reale. Il modulo stesso è costituito da quattro indicatori a sette segmenti, ognuno dei quali è composto da sette LED etichettati da “a” a “g” che si accendono indipendentemente l’uno dall’altro. Non sono necessarie resistenze aggiuntive per collegare il modulo al microcontrollore Arduino Uno / Nano.
Lascia un commento