CONTENUTO ►
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.
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
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:
- nella procedura void setup, applichiamo la tensione alle quattro cifre dell’indicatore LED in modo che all’inizio del programma non siano accese;
- 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
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:
- 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.
Perfetto, stavo cercando di visualizzare ore e minuti in un display a 4 cifre, credo che questo timer possa aiutarmi
Grazie
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