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+ |
Puoi anche acquistarli separatamente dai link seguenti.
INTRODUZIONE DEI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
- |
|
Cablaggio
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.
Codice
Nota
Puoi aprire direttamente il file
13-7_segment.inonel percorsoelite-explorer-kit-main\basic_project\13-7_segment.Oppure copia questo codice nell’Arduino IDE.
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);
}
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.