Arduino

Display a sette segmenti con Arduino Uno R3

Alessandro Oppo 4 min di lettura

Benvenuti su 9minuti.it, oggi vedremo insieme come collegare ad Arduino un display a 7 segmenti con Arduino e che però ha al suo interno otto led. Spesso il povero punto viene trascurato ma è un led a tutti gli effetti.
Trattandosi di un solo display non abbiamo bisogno di librerie.

 

Per questa prova useremo:

  • Arduino Uno o simili
  • Otto resistenze da 220 ohm (vanno bene anche valori simili, es 270 ohm)
  • Breadboard

Collegamento del display a sette segmenti con Arduino

Attenzione, in questo tutorial tratteremo il display con il catodo in comune. Non sto a dilungarmi sulle differenze in quanto è pieno di guide che illustrano la differenza con i display con anodo in comune.

arduin sette segmenti schermo

 

Compra il display a 7 segmenti su Amazon e supporta il blog

 

Lo sketch del display a sette segmenti con Arduino

Vediamo ora uno sketch di esempio. Il seguente codice è stato preso da questo articolo e modificato opportunamente. Ho inoltre fatto delle aggiunte e sistemato alcuni punti dove creava problemi.

//modified for 9minuti.it from the original sketch that you can 
//find here https://www.allaboutcircuits.com/projects/interface-a-seven-segment-display-to-an-arduino/

// make an array to save pin configuration of numbers

int num_array[11][8] = { { 1, 1, 1, 1, 1, 1, 0, 0 }, // 0 { 0, 1, 1, 0, 0, 0, 0, 0 }, // 1 { 1, 1, 0, 1, 1, 0, 1, 0 }, // 2 { 1, 1, 1, 0, 1, 0, 1, 0 }, // 3 { 0, 1, 1, 0, 0, 1, 1, 0 }, // 4 { 1, 0, 1, 0, 1, 1, 1, 0 }, // 5 { 1, 0, 1, 1, 1, 1, 1, 0 }, // 6 { 1, 1, 1, 0, 0, 0, 0, 0 }, // 7 { 1, 1, 1, 1, 1, 1, 1, 0 }, // 8 { 1, 1, 1, 0, 1, 1, 1, 0 }, // 9 { 0, 0, 0, 0, 0, 0, 0, 1 } //. };

// this functions writes values to the sev seg pins void Num_Write(int number) { for (int j = 2; j < 10; j++) { digitalWrite(j, num_array[number][j - 2]); } }

void setup(void) { // set pin modes pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); }

void loop(void) { for (int i = 0; i < 11; i++) { Num_Write(i); delay(1000); } }

Compra il display a 7 segmenti su Amazon e supporta il blog

Commentiamo ora il codice scritto riga per riga.

6 – Scriviamo la matrice di tipo intero che conterrà i segmenti da accendere a seconda del numero da visualizzare sul display. num_array[11][8] va letta come una coordinata cartesiana, ovvero undici celle da otto numeri ciascuna.
7-17 Nella prima linea dell’array, corrispondente allo zero, ci accorgiamo che su otto campi solamente sei sono riempiti dal numero 1, esattamente come la quantità di segmenti necessari per comporre il numero 0.
21 – Dichiarazione della procedura Num_Write() con il parametro number di tipo intero. Questa procedura sarà quella che ci consentirà facilmente di scegliere quale numero visualizzare sul display.
22 – Ciclo for che parte da 2 come i nostri pin, se ad esempio fossimo partiti dal pin numero 3, il ciclo for avrebbe avuto questa intestazione

for (int j = 3; j < 11; j++)

23 – Funzione digitalWrite() che, come al solito, ha due parametri. Guardando attentamente vediamo che il primo parametro, ovvero il numero del pin, è dato dalla variabile j, la quale verrà incrementata ad ogni ciclo del for. Il secondo parametro è preso da un array.
Al primo giro del for il parametro num_array[x][y] scorrerà solamente le y. Ovvero riprodurrà nella funzione digitalWrite() questi numero uno alla volta, partendo da sinistra.

{ 1, 1, 1, 1, 1, 1, 0, 0 }, // 0

Infatti la digitalWrite() accetta anche 1 e 0 invece di HIGH e LOW, ottenendo sempre lo stesso esito.

30-37 Dichiarazione dei pin utilizzati per i segmenti/led come output
41-43 Ciclo for che incrementa il parametro della procedura Num_Write() in maniera da riprodurre tutti i numeri salvati nell’array.
44 – Delay da 1 secondo tra un ciclo del loop() e il successivo.

Vediamo ora un video dello sketch. I numeri scorrono velocemente perché il delay che avevo inserito era inferiore ad un secondo.

 

Conclusioni

Spero che questo tutorial sia stato d’aiuto a qualcuno, rimango a disposizione per aiuti o chiarimenti.

Grazie,
Alessandro

Leggi anche

Arduino

Minivocabolario: i parametri

In questa breve guida ti spiegherò cosa sono i parametri, in particolar modo applicate alla programmazione del micro controllore Arduino. Parametri Vediamo ora i parametri e per farlo ci lanceremo immediatamente con…