Display 7 segmenti a 4 cifre con TM1650 – I2C

Ultima modifica il 18 Febbraio 2024 by Adriano

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).

Display 7 segmenti 4 cifre TM1650

Citazione dell’articolo nella sezione Progetti del blog di Elettronica In

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
DisplayLED 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
Peso15 grammi
Fori di fissaggioQuattro fori da 2 mm

Display 7 segmenti 4 cifre TM1650

VISTA ANTERIORE DEL MODULO DISPLAY

Display 7 segmenti 4 cifre TM1650

VISTA POSTERIORE DEL MODULO DISPLAY

Display 7 segmenti 4 cifre TM1650

MISURE DEL MODULO DISPLAY

Connettore

Sotto è riportata la foto del connettore a cui collegare lo speciale cavo fornito con il display

Display 7 segmenti 4 cifre TM1650

Display 7 segmenti 4 cifre TM1650

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

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.

Display 7 segmenti 4 cifre TM1650

Display 7 segmenti 4 cifre TM1650

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.

Display 7 segmenti 4 cifre TM1650

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

Real-Time Clock Module ds1302

Materiale necessario

Keyestudio PLUS

Display 7 segmenti 4 cifre TM1650

Real-Time Clock Module DS1302

Cavi di collegamento colorati

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

Display 7 segmenti 4 cifre TM1650

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.

Display 7 segmenti 4 cifre TM1650

Vista dall’alto dei componenti collegati alla scheda di controllo

Display 7 segmenti 4 cifre TM1650

Funzionamento dell’orologio

Display 7 segmenti 4 cifre TM1650

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.

#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:

Keyestudio Starter Kit micro:bit

Il Kit può essere acquistato presso Amazon, o AliExpress. Il codice dell’articolo è ks0361

Acquisto presso Amazon Acquisto presso AliExpress

Materiale necessario

Keyestudio PLUS

Display 7 segmenti 4 cifre TM1650

 Sensore LM35 (Ks0022 keyestudio)

Cavi di collegamento colorati

Schema dei collegamenti

Display 7 segmenti 4 cifre TM1650

Display 7 segmenti 4 cifre TM1650

Vista dall’alto dei componenti collegati alla scheda di controllo

Display 7 segmenti 4 cifre TM1650

Dettaglio del modulo sensore LM35

Display 7 segmenti 4 cifre TM1650

Valore di temperatura mostrato sul display

Codice utilizzato

Sotto il codice utilizzato per il test.

#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.

Display_LCD_OLED_TFT