In questo video andremo ad imparare come gestire un display 7 segmenti a 4 cifre con arduino uno.
Per realizzare il progetto abbiamo utilizzato:
• un display a 7 segmenti a 4 cifre
• arduino uno
• un potenziometro
Come prima cosa andiamo a sottolineare che un generico display a 7 segmenti è formato da 7 led + 1 (per il punto) collegati insieme. è importante verificare prima di tutto che il display sia ad anodo comune o a catodo comune: ad anodo comune significa che il display possiede una sola fonte di alimentazione, mentre per pilotare ogni singolo led si va a gestire la messa a terra su ogni catodo in modo separato l'uno dall'altro; a catodo comune significa che il catodo di ognuno dei led ce formano il display è collegato insieme e che quindi per pilotare il display ci basterà alimentare o meno, in modo separato l'uno dall'altro, l'anodo di ogni led.
in questo tutorial stiamo utilizzando un display a catodo comune. infatti andiamo a collegare i pin A,B,C,D,E,F,G ai pin digitali di arduino: quando scriveremo digitalWrite(A,HIGH), il led A si accenderà.
inoltre ogni display possiede anche un pin riservato al cosiddetto DOT (il punto ), utilizzato per le cifre decimali o per differenziare il 6 dal 9.
ogni display non è dotato di un solo ground nel caso sia a catodo comune o di un solo vcc nel caso sia ad anodo comune, bensì da due di essi. Per questo motivo i display a 7 segmenti sono dotati di 10 pin.
Ora il nostro display 7 segmenti a 4 cifre è dotato di 4 ulteriori pin, denominati appunto 1,2,3,4, i quali si occupano di accendere o spegnere ognuna delle quattro cifre (se dobbiamo scrivere 100, il pin 1 lo spegneremo perchè la quarta cifra non ci servirà per comporre il numero 100). Partendo da destra per comandare la prima cifra si andrà a pilotare il pin 4, per la terza cifra il pin 3, poi pin 2 e infine pin 1 per quella più a sinistra.
Ora che sappiamo come è fatto un display 7 segmenti a 4 cifre, nel caso non l'aveste ancora acquistato, vi lasciamo qualche link con varie promozioni sui display led (sono display molto economici):
• https://amzn.to/2CsUd0M
• https://amzn.to/2P82HB9
• https://amzn.to/2QYnNPR
sono tutti display a catodo comune, più semplici all'uso.
In questo progetto vogliamo andare a visualizzare dei valori letti da un potenziometro su di questo display. Quindi andiamo a collegare un potenziometro ad arduino (visto frontalmente): pin a destra è VCC, pin centrale è GND, pin a sinistra collegato ad A0 di arduino.
Ora i seguenti collegamenti dovrete farli tenendo sotto d'occhio l'immagine che vi proponiamo nel video dove sono denominati tutti i pin del display. Collegare le coppie: (B-2) (3-3) (2-4) (F-5) (A-6) (1-7) (4-8) (G-9) (C-10) ( •-11) (D-12) (E-13).
il riferimento è (pin display - pin arduino).
terminati i collegamenti si passa alla programmazione del codice!
prima di incominciare devi scaricare la libreria SEVSEG.h :
link: https://www.arduinolibraries.info/libraries/sev-seg
Se non ricordi come includere una libreria, ecco il tutorial:
Una volta in possesso della libreria SEVSEG.h la andiamo ad includere al codice. successivamente andiamo a creare un istanza della classe sevseg, scrivendo appunto Sevseg sevseg.
creiamo una macro per il potenziometro collegato ad A0, e per ognuno dei pin collegati al display.
nel void setup andiamo ad inizializzare variabili e vettori che ci serviranno durante il richiamo della funzione sevseg.begin(...) per inizializzare l'istanza. vi consigliamo di impostare "updatewithdelay s= true; leadingzeros=false;". Andiamo successivamente a settare sevseg.brightness(90) per gestire la luminosità del display.
Nel void loop acquisiamo i valori provenienti dal potenziometro, li scaliamo con la funzione map da 0 a 5000 corrispondenti ai valori della tensione che alimenta il potenziometro (0 - 5000 milliVolt). Successivamente per impostare il numero da mostrare sul display si richiama la funzione sevseg.setNumber(valore,3), dove 3 significa: accendi il terzo punto a partire da destra (valori del tipo 1.125).
infine per aggiornare il valore sul display richiamiamo la funzione sevseg.refreshDisplay(); .
IMPORTANTISSIMO: non aggiungere alcun tipo di delay() nel void loop per rallentare la visualizzazione dei numeri perchè il display non mostrerà più nulla!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include SevSeg.h |
Commenti
Posta un commento