Introduction: Usare Un Display Grande a 4 Cifre 8886 Display Con Wemos ESP8266 Arduino NodeMCU

Questo progetto è un semplice esempio che mostra come collegare un display del tipo 8886-Display e, per comodità nostra, un Wemos D1 - ma potrebbe essere un Arduino o un NodeMCU o qualsiasi altro microcontrollore che state usando per un progetto.

Esistono display più piccoli comandabili con la seriale, ma molte volte è comodo avere un display bello visibile, e basta una libreria per poter usare questo, che tra le altre cose è anche collegabile in cascata, per cui qui facciamo l'esempio con una scheda e quindi a 4 cifre/lettere, ma potrebbero essere 8, 12, 16 eccetera.

Per pilotare questo display bastano 2 GPIO, anche se per l'uso completo è meglio avere 4 GPIO: con 4 lo scrolling del display è migliore e si può regolare la luminosità del display usando la funzione PWM. Tra l'altro questo esempio è anche un interessante esercizio su come si può usare la Pulse Width Modulation per "simulare" un controllo analogico.

Supplies

- un Wemos D1 (oppure NodeMCU oppure un Arduino ecc)

- un 8886 Display, da Ebay https://www.ebay.it/itm/293578751168 oppure con un po' di sconto direttamente da

http://www.soluzionisemplici.com/display-grande-ra...

- un comune header da 2.54mm per Dupont da saldare (numero pin quanto basta)

- qualche cavetto dupont (quanto basta)

Step 1: Fare I Collegamenti Per L'uso Con 4 GPIO

I collegamenti sono quelli in figura. Abbiamo scelto 4 GPIO a caso, ehm... i più comodi per fare il disegno... potete tranquillamente sceglierne altri, la libreria che andiamo ad usare permette di scegliere quello che si vuole.

L'alimentatore da 3.3V potrà anche alimentare il Wemos ovvero tutto quanto il circuito, dopo che sarà programmato e non avrete più bisogno di collegarlo all'USB.

ATTENZIONE che il display a piena potenza e tutto acceso può assorbire anche 500mA quindi non prendete i 3.3V dal Wemos perché probabilmente sarebbe troppa corrente per lui.

Step 2: (alternativo a 1) I Collegamenti Per 2 GPIO (se Vi Serve Risparmiare Sui Pin GPIO)

I collegamenti sono quelli in figura. Abbiamo scelto 2 GPIO a caso, potete sceglierne altri, la libreria che andiamo ad usare permette di scegliere quello che si vuole.

IN FIGURA sono (1) collegati insieme i pin marchiati RCK e SI (2) il pin PWM è collegato a GND.

IN ALTERNATIVA si può mettere una goccia di stagno (oppure 2 resistenze 0R) per mettere in corto circuito i solder jumper presenti sul retro del circuito stampato, le scritte sono piccoline, uno si chiama SINGLE RCK-SI l'altro si chiama NO PWM (potrebbe servirvi una lente).

L'uso con 2 GPIO è un ripiego se, nel progetto che state facendo, state usando altri GPIO per altre cose e così ve ne rimangono solo 2 liberi; rinunciate così alla luminosità variabile (PWM a GND manda la luminosità al massimo) e avrete un leggero flickering facendo scrolling di scritte (RCK usato assieme a SI provoca questo).

L'alimentatore da 3.3V potrà anche alimentare il Wemos ovvero tutto quanto il circuito, dopo che sarà programmato e non avrete più bisogno di collegarlo all'USB. Il display a piena potenza e tutto acceso può assorbire anche 500mA quindi non prendete i 3.3V dal Wemos perché sarebbe troppa corrente per lui.

Step 3: Scaricare La Libreria Da GITHUB

Se non avete installata la IDE di Arduino e non avete installato le
estensioni per il controllore che state usando, si trovano numerosi tutorial per questo, e non vogliamo ripeterci.

Qui supponiamo che abbiate già installato la IDE di Arduino, installato eventualmente l'estensione Wemos, o NodeMCU o qualsiasi cosa stiate usando, ed abbiate già provato a compilare e caricare un programma, anche solo quello per accendere un led con un GPIO!

Per visualizzare numeri e scritte su questo display, bè non è molto più difficile dell'accendere un led, visto che è già disponibile una libreria per ESP8266/Arduino che fa tutto lei, che si scarica da:

https://github.com/aldoaldoaldo/visualvision/blob/...

potete installarla credo con la funzione per installare librerie zip della IDE di Arduino, io che non mi ricordo mai dov'è questa funzione, ho semplicemente unzippato lo ZIP in C:\Users\User\Documents\Arduino\libraries\

e la IDE poi la trova (eh sì il mio utente di Windows si chiama "User", ho molta fantasia).

Oltre che ai file della libreria, nella cartella examples ci sono già due esempi, ed andremo ora a provare e modificare quelli...

Step 4: Prova Di Visualizzazione Per La Versione Con 4 GPIO

Per provare la versione con 4 GPIO, l'esempio giusto è dentro la cartella

C:\Users\User\Documents\Arduino\libraries\Display-Big\examples\displaybig-example-full

e si chiama displaybig-example-full.ino

L'esempio mette la luminosità a metà, scrive sullo schermo "CIAO" e poi fa girare una scritta.

L'unica cosa da cambiare è all'inizio, la definizione dei GPIO che avete usato per il collegamento. Di standard c'è scritto questo:

#define g_pwm 16
#define g_sck 14
#define g_si  12
#define g_rck 13

Voi li cambierete con quelli che avete usato, se avete fatto come nella figura prima, è

#define g_pwm 5 
#define g_sck 4
#define g_si  0
#define g_rck 2

O dovrebbe anche andare bene così (se avete installato correttamente l'espansione Wemos nell'interfaccia Arduino, che definisce D1 D2 eccetera...):

#define g_pwm D1
#define g_sck D2
#define g_si  D3
#define g_rck D4

Oppure qualsiasi altro PIN abbiate usato (meglio non usare TX e RX a meno che sappiate come ridefinirli per farli funzionare come un pin normale): come è intuibile a g_pwm va associato il pin collegato a quello battezzato PWM sul circuito stampato, a g_sck quello SCK e così via... se qualcosa non funzionasse avete probabilmente scambiato. Controllate bene!

Tabella utile:

WeMos D1 mini Pin Number / Arduino IDE Pin Number

D0 16

D1 5

D2 4

D3 0

D4 2

D5 14

D6 12

D7 13

D8 15

TX 1

RX 3

Tutto questo funziona con qualsiasi altro controllore tipo NodeMCU e altri e ovviamente anche con Arduino.

In realtà deve funzionare anche su Raspberry, non c'è motivo per cui non possa andare; c'è probabilmente da aggiungere qualche IFDEF alla liberia per questioni di forma, più che di sostanza.

Compilate il programma, lo caricate e funzionerà. DA NOTARE che se usate D3 (o GPIO0 per Arduino e altri) visto che questo è anche è il pin di programmazione, per provarlo in talune situazioni dovrete uscire dal modo progammazione dove questo pin è messo a 0.

Step 5: Prova Di Visualizzazione Per La Versione 2 GPIO

Per provare la versione con 2 GPIO, l'esempio giusto è dentro la cartella

C:\Users\User\Documents\Arduino\libraries\Display-Big\examples\displaybig-example-2gpio

e si chiama

displaybig-example-2gpio

L'esempio (come per quello a 4 GPIO) mette la luminosità a zero e scrive sullo schermo "CIAO" e poi fa girare una scritta. L'unica cosa da cambiare è all'inizio, la definizione dei GPIO che avete usato per il collegamento. Di standard c'è scritto questo:

#define g_sck     14 
#define g_si_rck  12

Voi li cambierete con quelli che avete usato, come in figura è

#define g_sck 5 
#define g_si_rck 4

Dovrebbe anche andare bene così (se avete installato correttamente l'espansione Wemos nell'interfaccia Arduino):

#define g_sck D1
#define g_si_rck  D2

Oppure qualsiasi altro PIN abbiate usato. Come è intuibile a g_sck va associato il pin collegato a quello battezzato SCK sul circuito stampato, a g_si_rck quello SI (che va cortocircuitato con RCK).

Tutto questo funziona con qualsiasi altro controllore tipo NodeMCU e altri e ovviamente anche con Arduino, l'unica cosa che potreste sbagliare è il nome/numero dei GPIO ma con due prove e facendo attenzione riuscite a sistemare.


Compilate il programma, lo caricate e funzionerà.

DA NOTARE che se usaste D3 (o GPIO0 per Arduino e altri) visto che questo è anche è il pin di programmazione, per provarlo dovrete uscire dal modo progammazione dove questo pin in molti hardware è messo a 0.

Step 6: PWM....

Nell'introduzione abbiamo parlato di PWM: nella linea g_pwm si manda
un segnale PWM che può essere 0 per la luminosità massima, oppure una onda quadra con duty cicle variabile per variare la luminosità ingannando l'occhio. L'istruzione che la modifica è

analogWrite(g_pwm,PWM_RANGE/2);

visto che PWM_RANGE è definito in 512, un numero da 0 a 511 vi farà vedere diverse sfumature di luminosità.

Un esercizio successivo sarebbe imparare a leggere una fotoresistenza e variare la luminosità del display a seconda della luminosità ambiente.....

Arduino Contest 2020

Participated in the
Arduino Contest 2020