Modulo display a LED Rossi (o verdi ) a 7 segmenti a catodo comune con 4 cifre e interfaccia I²C basata sul chip TM1650. È possibile impostare la luminosità su 8 livelli (tramite controllo esterno), dispone di protezione da inversione di polarità sull’alimentazione e quattro punti decimali (uno per cifra).
Citazione dell’articolo nella sezione Progetti del blog di Elettronica In
Indice
Il display a 7 segmenti a led
Il display a sette segmenti è un dispositivo elettronico in grado di visualizzare le 10 cifre numeriche, e in alcuni casi alcune lettere alfabetiche e simboli grafici, attraverso l’accensione di combinazioni di sette segmenti luminosi. I display a sette segmenti sono molto utilizzati in alcuni orologi, in strumenti di misura, nei sistemi di prenotazione usati negli uffici pubblici e in molti altri apparecchi [Fonte Wikipedia]
Caratteristiche principali del display
Chip di controllo: | TM1650, supporta 8 livelli di luminosità |
Interfaccia: | Interfaccia: I²C |
Alimentazione: | da 3,3 V a 5,5 V |
Display | LED verdi /rossi a 7 segmenti a catodo comune con 4 cifre e un punto decimale per ogni cifra |
Protezioni | da inversione di polarità dell’alimentazione tramite diodo |
Misure (mm) | 59,56x21x17 |
Dimensioni Display (mm): | 50x19x8 |
Peso | 15 grammi |
Fori di fissaggio | Quattro fori da 2 mm |
VISTA ANTERIORE DEL MODULO DISPLAY
VISTA POSTERIORE DEL MODULO DISPLAY
MISURE DEL MODULO DISPLAY
Connettore
Sotto è riportata la foto del connettore a cui collegare lo speciale cavo fornito con il display
Cavo di collegamento montato sul connettore, il collegamento è possibile in una sola posizione in quanto è polarizzato.
Dove trovare il display
Il display 7 segmenti con TM1650 può essere acquistato presso il sito di Futura elettronica, e come anticipato, si trova di vari colori
- Display colore rosso, codice 2846-4DIGMODI2C
- Display colore verde, codice 2846-4DIGMODI2CGR
Il suo costo al momento della pubblicazione di questo articolo è di 4,50 €.
Il display viene fornito con un cavetto a 4 poli con da un lato un connettore polarizzato, mentre dall’altro lato i cavi terminano con connettore tipo DuPont femmina per il collegamento alla scheda di controllo.
Libreria per display 7 segmenti con TM1650
Per utilizzare il display a 7 segmenti a 4 cifre con TM1650 è necessario installare l’apposita libreria, questa può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo “TM1650”.
La libreria è stata scritta da Anatoli Arkhipenko, maggiori informazioni sulla relativa pagina sito GitHib.
Per caricare una libreria vi consiglio la lettura dell’articolo Arduino – Tutorial, come installare una libreria
Utilizzo del display per creare un orologio
Un primo progetto per testare il display 7 segmenti 4 cifre TM1650 prevede la creazione di un orologio.
Sul display saranno mostrati l’ora e i minuti separati da un punto.
Utilizzeremo una scheda Arduino, a cui collegheremo oltre al display, un modulo RTC.
Modulo RCT MH-Real-Time Clock Module -2
Il modulo MH-Real-Time Clock Module -2 che si basa sull’ integrato DS1302 al cui interno è presente un orologio in tempo reale / calendario e 31 byte di RAM statica.
Per maggiori informazioni sul modulo ed esempi di utilizzo vedere l’articolo Real-Time Clock Module DS1302 con Arduino
Materiale necessario
![]() |
|
![]() |
Si è utilizzata una scheda Keyestudio PLUS. Completamente compatibile con l’ambiente di sviluppo Arduino IDE. Contiene tutte le funzioni della scheda Arduino UNO R3 e alcuni miglioramenti che ne rafforzano notevolmente la funzione.
Altra particolarità: alla scheda possono essere collegati dispositivi, nel nostro caso il display, alimentati a 3,3V o a 5V, un deviatore permette di scegliere la tensione disponibile sui pin.
Schema dei collegamenti
Il display andrà collegato tramite il cavo fornito ai pin +5V e GND per l’alimentazione . II cavo collegato a SCL andrà collegato al pin A5, mentre il pin SDA al pin A4.
Per quanto riguarda il modulo RTC, noterete una particolarità: l’alimentazione del modulo non è presa dai canonici pin +5V e GND ma dai pin digitali D3 (+5V) e D4 (GND).
Per questo motivo dopo averli impostati come OUTPUT, tramite il comando digitalWrite il pin D4 che è collegato a GND del modulo viene portato a livello LOW, mentre il pin D3 collegato a VCC del modulo viene portato a livello HIGH.
Vista dall’alto dei componenti collegati alla scheda di controllo
Funzionamento dell’orologio
Dettaglio del modulo RTC, in primo piano la batteria a bottone per mantenere i dati anche se in modulo non è alimentato
Codice utilizzato
Sotto il codice utilizzato per il test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <Wire.h> #include <TM1650.h> #include <RTClib.h> // Init display TM1650 d; char line[5]; // Init rtc object // DS1302 rtc; // DS1302 rtc(ce_pin, sck_pin, io_pin); // // ce_pin (RST): default 4 // sck_pin (CLK): default 5 // io_pin (DAT): default 6 DS1302 rtc(7, 5, 6); #define VCC 3 // +5V #define GND 4 // GND // buffer for DateTime.tostr char buf[20]; void setup() { Wire.begin(); //Join the bus as master d.init(); Serial.begin(9600); pinMode(VCC, OUTPUT); // imposta 'VCC' come output pinMode(GND, OUTPUT); // imposta 'GND' come output digitalWrite(VCC, HIGH); //Portiamo VCC a 5V digitalWrite(GND, LOW); //Portimao GND a 0V rtc.begin(); delay(100); d.setBrightness(TM1650_MIN_BRIGHT); d.displayOn(); // toglire il commento per impostare data e ora //rtc.adjust(DateTime(2023, 6, 10, 10, 44, 0)); if (!rtc.isrunning()) { Serial.println("RTC is NOT running!"); // la riga seguente imposta l'RTC sulla data e l'ora // in cui questo schizzo è stato compilato rtc.adjust(DateTime(__DATE__, __TIME__)); } } void loop() { d.displayOff(); d.clear(); DateTime now = rtc.now(); // imposta il formato ora e minuti snprintf(line, 5, "%02d%02d", now.hour(), now.minute()); //mostra sul diplay ora e minuti d.displayString(line); d.displayOn(); d.setDot(1, true); //Mostra il punto d.displayOn(); delay(1000); } |
Utilizzo del display per mostrare la temperatura
In questo secondo esempio utilizzeremo il display con TM1650 per mostrare la misura della temperatura ambiente. Utilizzeremo una scheda Arduino, a cui collegheremo oltre al display un sensore di temperatura lineare LM35.
Sensore analogico di temperatura LM35
Il sensore di temperatura utilizzato si basa sul sensore lineare LM35 a semiconduttore. Può essere utilizzato per rilevare la temperatura dell’ambiente.
Questo sensore offre un intervallo funzionale compreso tra 0 e 100 gradi Celsius. La sensibilità è di 10 mV per grado Celsius. La tensione di uscita è proporzionale alla temperatura.
In questo caso il sensore è KS0022 keyestudio LM35 Linear Temperature Sensor

Foto del modulo con sensore LM35
Per maggiori informazioni vedere l’articolo Sensore di temperatura LM 35
Il modulo sensore presenta 3 pin, e la tensione in uscita sarà letta e convertita in digitale dalla porta analogica presente su Arduino o suo clone.
Dove trovare il KS0022 LM35 Linear Temperature Sensor
Il modulo KS0022 keyestudio LM35 Linear Temperature Sensor può essere trovato singolarmente oppure all’interno di vari Kit:
Il Kit può essere acquistato presso Amazon, o AliExpress. Il codice dell’articolo è ks0361
Acquisto presso Amazon | Acquisto presso AliExpress |
![]() | ![]() |
Materiale necessario
![]() |
|
Sensore LM35 (Ks0022 keyestudio) | ![]() |
Schema dei collegamenti
Vista dall’alto dei componenti collegati alla scheda di controllo
Dettaglio del modulo sensore LM35
Valore di temperatura mostrato sul display
Codice utilizzato
Sotto il codice utilizzato per il test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <Wire.h> #include <TM1650.h> float vref = 1.1; // Vref dell'ADC (quell'interno è di 1,1V) TM1650 d; /* Numero del pin analogico sul quale è collegato l'LM35 */ #define LM35_pin 0 char string[4]; void setup() { Wire.begin(); //Join the bus as master d.init(); delay(100); d.setBrightness(TM1650_MIN_BRIGHT); d.displayOn(); /* Impostazioni comuni */ analogReference(INTERNAL); // per l'ADC usiamo il Vref interno da 1,1V (migliore precisione) analogRead(LM35_pin); // Prima lettura "a vuoto" (serve per l'assestamento dell'ADC) } void loop() { float temp = readTemp(); // legge il valore della temperatura e la memorizza nella var. temp. sendTempToDisplay(temp); // invia il valore al LCD } /* Legge la temperatura */ float readTemp() { float temp = 0.0; // valore convertito in temperatura (°C) int val = 0; // valore quantizzato dall'ADC [0..1023] int nread = 5; // numero di letture (da 5 a 8) float somma = 0.0; // somma delle letture for (int i = 0; i < nread; i++) { val = analogRead(LM35_pin); // legge il dato della tensione sul pin 'LM35_pin' temp = (100.0 * vref * val) / 1024.0; // lo converte in °C somma += temp; // aggiunge alla somma delle temperature lette } return (somma / nread); // ne calcola il valore medio } /* Invia la temperatura al display*/ void sendTempToDisplay(float temp) { d.displayOff(); itoa(temp, string, 10); d.setPosition(2, 99); // carattere ° d.setPosition(3, 57); // carattere C d.setDot(1, true); //Mostra il punto dopo il valore d.setBrightness(TM1650_MIN_BRIGHT); d.displayOn(); delay(100); d.displayString(string); delay(1000); } |
Altri moduli display
Panoramica di altre tipologie di display utilizzati nei vari progetti presenti sul sito. Dai più semplici LCD 16×2, passando per i TFT con touch screen e quelli tipo OLED.