06. Pilotare un Display a led
Un Display a Led a 7 segmenti, del tipo mostrato in figura, è un dispositivo che incorpora 7 led pilotabili separatamente.
Questo componente è caratterizzato dal fatto che i led hanno in comune l'anodo o il catodo.
Nel progetto riportato in questa pagina i led del Display hanno in comune l'anodo.
Notare che il circuito lavora su logica negativa: quando sui pin di output non vi è tensione (cioè corrisponde a GND) il circuito del segmento si chiude e il segmento si accende,
L'anodo in comune è collegato con il filo rosso al centro del circuito.
La resistenza utilizzata è da 330 Ω.
Lo sketch riportato di seguito accende i numeri da 0 a 9 sul display.
La numerazione dei segmenti nello Sketch si basa sul seguente schema:
Sketch
int N;
void setup() {
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void number(int n) {
int arr[7];
int led[7]={6,7,8,9,10,12,11}; //corrispondenza segmento-pin
int i;
if (n==0) {
arr[0]=0; arr[1]=0; arr[2]=0; arr[3]=0;
arr[4]=0; arr[5]=0; arr[6]=1;
}
else if (n==1) {
arr[0]=1; arr[1]=0; arr[2]=0; arr[3]=1;
arr[4]=1; arr[5]=1; arr[6]=1;
}
else if (n==2) {
arr[0]=0; arr[1]=0; arr[2]=1; arr[3]=0;
arr[4]=0; arr[5]=1; arr[6]=0;
}
else if (n==3) {
arr[0]=0; arr[1]=0; arr[2]=0; arr[3]=0;
arr[4]=1; arr[5]=1; arr[6]=0;
}
else if (n==4) {
arr[0]=1; arr[1]=0; arr[2]=0; arr[3]=1;
arr[4]=1; arr[5]=0; arr[6]=0;
}
else if (n==5) {
arr[0]=0; arr[1]=1; arr[2]=0; arr[3]=0;
arr[4]=1; arr[5]=0; arr[6]=0;
}
else if (n==6) {
arr[0]=0; arr[1]=1; arr[2]=0; arr[3]=0;
arr[4]=0; arr[5]=0; arr[6]=0;
}
else if (n==7) {
arr[0]=0; arr[1]=0; arr[2]=0; arr[3]=1;
arr[4]=1; arr[5]=1; arr[6]=1;
}
else if (n==8) {
arr[0]=0; arr[1]=0; arr[2]=0; arr[3]=0;
arr[4]=0; arr[5]=0; arr[6]=0;
}
else if (n==9) {
arr[0]=0; arr[1]=0; arr[2]=0; arr[3]=1;
arr[4]=1; arr[5]=0; arr[6]=0;
}
for (i=0; i<7; i++)
digitalWrite(led[i], arr[i]);
}
void loop() {
number(N);
N = (N+1)% 10;
delay(1000);
}
Sito: 7ecnologie
Sezione: 17. Robotica e domotica
Capitolo: 01. Elementi di Elettronica
Paragrafo: 03. Progetti
Sottoparagrafo: 06. Pilotare un Display a led
Indice dei capitoli: 00. Risorse - 01. Elementi di Elettronica - 02. Arduino - 98. Esercizi
Indice dei paragrafi: 01. Ambiente di sviluppo - 02. Elementi di programmazione - 03. Progetti - 04. Tutorial
Indice dei sottoparagrafi: 01. Led lampeggiante - 02. Pulsante di accensione led - 03. Pilotare un transistor - 04. Pilotare un relè - 05. Uso del fotoaccoppiatore - 06. Pilotare un Display a led - 07. Interruttore crepuscolare - 08. Gli infrarossi - 09. Sensore di distanza