Collegamento display 7 Segmenti 4 Cifre Arduino

L’indicatore LED a quattro cifre e sette segmenti di Arduino viene utilizzato per creare contatori o timer sul microcontrollore Arduino, emettere valori numerici da sensori digitali in progetti già pronti. Consideriamo la piedinatura dell’indicatore LED a quattro caratteri, come collegare il modulo di visualizzazione alla scheda Arduino e consideriamo diversi esempi di utilizzo del display a quattro cifre con una descrizione dettagliata dei programmi.




Per questa attività sono necessari:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • display 4 digit a 7 segmenti
  • resistenze e pulsanti
  • breadboard
  • cavi di collegamento
  • librairia TimerOne.h

Modulo display 4 digit a 7 segmenti datasheet, pinout

Il problema del collegamento dell’indicatore è che vengono utilizzati molti pin di Arduino. La piedinatura dell’indicatore a quattro caratteri non è diversa da quella dell’indicatore a sette segmenti a un carattere di Arduino. La differenza sta nel numero di cifre: ogni cifra si accende scollegando l’alimentazione dal catodo corrispondente. Pertanto, tutti i LED di un segmento di cifre (ad esempio, A-A-A-A-A) sono collegati in parallelo a un catodo comune.

Display 7 segmenti 4 cifre Arduino pinout, datasheet
Modulo display 7 segmenti 4 cifre Arduino pinout, datasheet

L’inclusione di un singolo segmento è abbastanza facile da gestire. Vediamo un piccolo esempio. Inizialmente, tutte e 4 le cifre (D1, D2, D3, D4) sono alimentate. Per accendere il segmento A del secondo simbolo, è necessario applicare una tensione al piedino A (anodo). Ma il segmento non si accenderà finché non verrà tolta la tensione al tratto D2. In questo modo è possibile accendere qualsiasi LED del modulo 7 dell’indicatore di segmento.

Come collegare display 7 segmenti 4 cifre Arduino

Come usare e pilotare display 7 segmenti 4 cifre Arduino Uno
Come usare e pilotare display 7 segmenti 4 cifre con Arduino Uno

Nel primo esempio mostreremo un semplice programma per capire chiaramente come funziona il display a 4 cifre e 7 segmenti di Arduino. Lo schema di collegamento dell display 7 segmenti 4 cifre al microcontrollore Arduino Uno è riportato nel diagramma precedente, ma il primo esempio non utilizza tutti i pin di Arduino nel programma. Collegare il display LED a 4 cifre e 7 segmenti alla scheda e caricare il seguente codice.

Programma Arduino per display 7 segmenti 4 cifre




#define g  11
#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

void setup() {
  pinMode(g, OUTPUT);
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);

  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);

  digitalWrite(g, HIGH);
  delay(1000);
}

void loop() {
  digitalWrite(d1, LOW);
  digitalWrite(d4, HIGH);
  delay(200);
  digitalWrite(d2, LOW);
  digitalWrite(d1, HIGH);
  delay(200);
  digitalWrite(d3, LOW);
  digitalWrite(d2, HIGH);
  delay(200);
  digitalWrite(d4, LOW);
  digitalWrite(d3, HIGH);
  delay(200);
}

Spiegazione del codice per display 7 segmenti 4 cifre Arduino:



  1. nella procedura void setup, applichiamo la tensione alle quattro cifre dell’indicatore LED in modo che all’inizio del programma non siano accese;
  2. nel ciclo principale void loop accendiamo le scariche una alla volta (l’accensione avviene in modalità LOW), mentre il segmento G rimane sempre acceso.

Timer su display 7 segmenti 4 cifre con Arduino

Timer su display quattro cifre e sette segmenti Arduino
Timer su display quattro cifre e sette segmenti con Arduino

Nel seguente esempio costruiremo un circuito – un timer Arduino con un indicatore LED a quattro cifre e sette segmenti. Prima di caricare il programma è necessario collegare un pulsante al pin A0 del microcontrollore e installare la libreria TaimerOne.h nell’IDE Arduino. Il timer si avvia solo quando il pulsante viene premuto; quando il pulsante viene rilasciato, il timer si ferma e si ripristina quando il pulsante viene premuto di nuovo.

Programma Arduino per timer su display 7 segmenti 4 digit

#include "TimerOne.h"
#define a 5
#define b 6
#define c 7
#define d 8
#define e 9
#define f 10
#define g 11

#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

long n = 0;
int x = 100;
int count = 0;

void setup() {
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);

  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  
  pinMode(A0, INPUT);

  Timer1.initialize(100000);
  Timer1.attachInterrupt( add );
}

void loop() {
  while (digitalRead(A0) == LOW) {
    clearLEDs();
    pickDigit(0);
    pickNumber((n / 1000));
    delay(5);

    clearLEDs();
    pickDigit(1);
    pickNumber((n % 1000) / 100);
    delay(5);

    clearLEDs();
    pickDigit(2);
    pickNumber(n % 100 / 10);
    delay(5);

    clearLEDs();
    pickDigit(3);
    pickNumber(n % 10);
    delay(5);
  }
  if (digitalRead(A0) == HIGH) { n = 0; count = 0; }
}

void pickDigit(int x) {
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);
  switch (x) {
    case 0: digitalWrite(d1, LOW);  break;
    case 1: digitalWrite(d2, LOW);  break;
    case 2: digitalWrite(d3, LOW);  break;
    default: digitalWrite(d4, LOW); break;
  }
}

void pickNumber(int x) {
  switch (x) {
    default: zero();   break;
    case 1: one();     break;
    case 2: two();     break;
    case 3: three();  break;
    case 4: four();    break;
    case 5: five();     break;
    case 6: six();       break;
    case 7: seven(); break;
    case 8: eight();  break;
    case 9: nine();   break;
  }
}

void clearLEDs() {
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void zero() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}

void one() {
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void two() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}

void three() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}

void four() {
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void five() {
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void six() {
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void seven() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void eight() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void nine() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void add() {
  count ++;
  if (count == 10) {
    count = 0;  n++;
    if (n == 10000) { n = 0; }
  }
}

Spiegazione del codice per timer su display 4×7 Arduino:

  1. se non si collega il pulsante, il timer si avvia immediatamente dopo il caricamento del codice.

Conclusione. Se lo scopo del nostro progetto è quello di visualizzare la temperatura o l’ora su un dispositivo, avremo bisogno di un display a più cifre o di diversi dispositivi a una cifra. Un display a 7 segmenti può visualizzare i numeri da 0 a 9 e alcune lettere, utilizzando un mix di lettere maiuscole e minuscole.

5/5 - (1 vote)


2 respuesta al ejemplo: Collegamento display 7 segmenti 4 cifre Arduino

  1. Perfetto, stavo cercando di visualizzare ore e minuti in un display a 4 cifre, credo che questo timer possa aiutarmi
    Grazie

  2. Buongiorno, il timer quando arriva
    a 99 azzera il digit 4, mette 1 nel digit 3 e ricomincia a contare, il digit 1 rimane sempre a zero
    Saluti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.