Nota

Ciao, benvenuto nella Community di SunFounder per appassionati di Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Accedi in anteprima agli annunci dei nuovi prodotti e alle anticipazioni.

  • Sconti Speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Giveaway Festivi: Partecipa a giveaway e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

Display a 7 segmenti

Panoramica

Un display a 7 segmenti è un dispositivo che può visualizzare numeri e lettere. È composto da sette LED collegati in parallelo. Diverse lettere/numeri possono essere mostrati collegando i pin del display alla fonte di alimentazione e abilitando i pin corrispondenti, accendendo così i segmenti LED corrispondenti. In questa lezione impareremo a visualizzare caratteri specifici su di esso.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link seguenti.

INTRODUZIONE DEI COMPONENTI

LINK PER L’ACQUISTO

Arduino Uno R4 WiFi

-

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistenza

ACQUISTA

Display a 7 Segmenti

ACQUISTA

Cablaggio

../_images/13-7_segment_display_bb.png

Schema Elettrico

In questo esperimento, collega ciascun pin a-g del display a 7 segmenti a un resistore di limitazione di corrente da 1000 ohm rispettivamente e poi ai pin 4-11. GND si collega a GND. Tramite la programmazione, possiamo impostare uno o più dei pin 4-11 su livello alto per accendere i LED corrispondenti.

../_images/13-7_segment_display_schematic.png

Codice

Nota

  • Puoi aprire direttamente il file 13-7_segment.ino nel percorso elite-explorer-kit-main\basic_project\13-7_segment.

  • Oppure copia questo codice nell’Arduino IDE.

13-7_segment.ino
  1/*
  2  The code is designed to control a 7-segment display using an Arduino. 
  3  It sequentially displays numbers 1-9 and letters A-F on the 7-segment 
  4  display, with each symbol displayed for one second.
  5
  6  Board: Arduino Uno R4 
  7  Component: 7-segment Display
  8*/
  9
 10// Define pins for each segment of the 7-segment display
 11const int a = 7;
 12const int b = 6;
 13const int c = 5;
 14const int d = 11;
 15const int e = 10;
 16const int f = 8;
 17const int g = 9;
 18const int dp = 4;  // Decimal point
 19
 20void setup() {
 21  // Set pins 4 to 11 as output
 22  for (int thisPin = 4; thisPin <= 11; thisPin++) {
 23    pinMode(thisPin, OUTPUT);
 24  }
 25  // Initialize display by turning off all segments
 26  turnOffAllSegments();
 27}
 28
 29void loop() {
 30  // Display numbers 1 to 9 and letters A to F sequentially
 31  digital_1(); delay(1000);
 32  digital_2(); delay(1000);
 33  digital_3(); delay(1000);
 34  digital_4(); delay(1000);
 35  digital_5(); delay(1000);
 36  digital_6(); delay(1000);
 37  digital_7(); delay(1000);
 38  digital_8(); delay(1000);
 39  digital_9(); delay(1000);
 40  digital_A(); delay(1000);
 41  digital_b(); delay(1000);
 42  digital_C(); delay(1000);
 43  digital_d(); delay(1000);
 44  digital_E(); delay(1000);
 45  digital_F(); delay(1000);
 46}
 47
 48void digital_1()  //display 1 to the 7-segment
 49{
 50  turnOffAllSegments();
 51  digitalWrite(b, HIGH);
 52  digitalWrite(c, HIGH);
 53}
 54
 55void digital_2()  //display 2 to the 7-segment
 56{
 57  turnOffAllSegments();
 58  digitalWrite(a, HIGH);
 59  digitalWrite(b, HIGH);
 60  digitalWrite(g, HIGH);
 61  digitalWrite(e, HIGH);
 62  digitalWrite(d, HIGH);
 63}
 64
 65void digital_3()  //display 3 to the 7-segment
 66{
 67  turnOffAllSegments();
 68  digitalWrite(a, HIGH);
 69  digitalWrite(b, HIGH);
 70  digitalWrite(c, HIGH);
 71  digitalWrite(d, HIGH);
 72  digitalWrite(g, HIGH);
 73}
 74void digital_4()  //display 4 to the 7-segment
 75{
 76  turnOffAllSegments();
 77  digitalWrite(b, HIGH);
 78  digitalWrite(c, HIGH);
 79  digitalWrite(f, HIGH);
 80  digitalWrite(g, HIGH);
 81}
 82
 83void digital_5()  //display 5 to the 7-segment
 84{
 85  turnOffAllSegments();
 86  digitalWrite(a, HIGH);
 87  digitalWrite(f, HIGH);
 88  digitalWrite(g, HIGH);
 89  digitalWrite(c, HIGH);
 90  digitalWrite(d, HIGH);
 91}
 92
 93void digital_6()  //display 6 to the 7-segment
 94{
 95  turnOffAllSegments();
 96  digitalWrite(a, HIGH);
 97  digitalWrite(f, HIGH);
 98  digitalWrite(e, HIGH);
 99  digitalWrite(d, HIGH);
100  digitalWrite(c, HIGH);
101  digitalWrite(g, HIGH);
102}
103
104void digital_7()  //display 7 to the 7-segment
105{
106  turnOffAllSegments();
107  digitalWrite(a, HIGH);
108  digitalWrite(b, HIGH);
109  digitalWrite(c, HIGH);
110}
111
112void digital_8()  //display 8 to the 7-segment
113{
114  turnOffAllSegments();
115  digitalWrite(a, HIGH);
116  digitalWrite(b, HIGH);
117  digitalWrite(c, HIGH);
118  digitalWrite(d, HIGH);
119  digitalWrite(e, HIGH);
120  digitalWrite(f, HIGH);
121  digitalWrite(g, HIGH);
122}
123
124void digital_9()  //display 9 to the 7-segment
125{
126  turnOffAllSegments();
127  digitalWrite(a, HIGH);
128  digitalWrite(b, HIGH);
129  digitalWrite(c, HIGH);
130  digitalWrite(d, HIGH);
131  digitalWrite(f, HIGH);
132  digitalWrite(g, HIGH);
133}
134
135void digital_A()  //display A to the 7-segment
136{
137  turnOffAllSegments();
138  digitalWrite(a, HIGH);
139  digitalWrite(b, HIGH);
140  digitalWrite(c, HIGH);
141  digitalWrite(e, HIGH);
142  digitalWrite(f, HIGH);
143  digitalWrite(g, HIGH);
144}
145
146void digital_b()  //display b to the 7-segment
147{
148  turnOffAllSegments();
149  digitalWrite(c, HIGH);
150  digitalWrite(d, HIGH);
151  digitalWrite(e, HIGH);
152  digitalWrite(f, HIGH);
153  digitalWrite(g, HIGH);
154}
155
156void digital_C()  //display C to the 7-segment
157{
158  turnOffAllSegments();
159  digitalWrite(a, HIGH);
160  digitalWrite(f, HIGH);
161  digitalWrite(e, HIGH);
162  digitalWrite(d, HIGH);
163}
164
165void digital_d()  //display d to the 7-segment
166{
167  turnOffAllSegments();
168  digitalWrite(b, HIGH);
169  digitalWrite(c, HIGH);
170  digitalWrite(d, HIGH);
171  digitalWrite(e, HIGH);
172  digitalWrite(g, HIGH);
173}
174
175void digital_E()  //display E to the 7-segment
176{
177  turnOffAllSegments();
178  digitalWrite(a, HIGH);
179  digitalWrite(d, HIGH);
180  digitalWrite(e, HIGH);
181  digitalWrite(f, HIGH);
182  digitalWrite(g, HIGH);
183}
184
185void digital_F()  //display F to the 7-segment
186{
187  turnOffAllSegments();
188  digitalWrite(a, HIGH);
189  digitalWrite(e, HIGH);
190  digitalWrite(f, HIGH);
191  digitalWrite(g, HIGH);
192}
193
194void turnOffAllSegments() {
195  // Turn off all segments of the 7-segment display
196  for (int thisPin = 4; thisPin <= 11; thisPin++) {
197    digitalWrite(thisPin, LOW);
198  }
199}


Analisi del Codice

Il codice può sembrare un po” lungo per questo esperimento, ma la sintassi è semplice. Diamo un’occhiata.

Chiamare la funzione nel loop()

digital_1(); //visualizza 1 sul display a 7 segmenti

delay(1000); //aspetta un secondo

digital_2(); //visualizza 2 sul display a 7 segmenti

delay(1000); //aspetta un secondo

digital_3(); //visualizza 3 sul display a 7 segmenti

delay(1000); //aspetta un secondo

digital_4(); //visualizza 4 sul display a 7 segmenti

Chiamare queste funzioni nel loop() serve a far visualizzare allo schermo a 7 segmenti i numeri da 0 a F. Le funzioni sono mostrate di seguito. Prendiamo digital_2() come esempio:

Analisi dettagliata di digital_2()

void digital_2()  //visualizza 2 sul display a 7 segmenti
{
  turnOffAllSegments();
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(d, HIGH);
}
../_images/13_7segment.jpeg

Prima di tutto, dobbiamo capire come il numero 2 appare sul display a 7 segmenti. Si ottiene alimentando i segmenti a, b, d, e, e g. Nella programmazione, i pin collegati a questi segmenti sono impostati su livello alto mentre c e f sono impostati su livello basso. Iniziamo utilizzando la funzione turnOffAllSegments() per spegnere tutti i segmenti e poi accendere quelli richiesti.

Dopo aver eseguito questa parte, il display a 7 segmenti mostrerà 2. Analogamente, la visualizzazione di altri caratteri è la stessa. Poiché le lettere b e d in maiuscolo, ovvero B e D, sarebbero simili a 8 e 0 sul display, sono visualizzate in minuscolo invece.