Tra i display che puoi collegare ad Arduino c’è il 128×64 Graphic LCD:
questo display è di tipo grafico e ti mette a disposizione una matrice di 128×64 punti, che puoi utilizzare sia per scrivere dei testi sia per disegnare simboli ed immagini.
Il 128×64 Graphic LCD è in grado di funzionare sia in modalità parallela, in cui usi gli 8 pin di dati DB0-DB7 oltre ai pin RS, R/W ed ENABLE (E) sia in modalità seriale se usi solo i pin RS, R/W ed ENABLE.
Per definire in quale modalità lavorare hai a disposizione il pin PSB ( 15 ) il quale se connesso al +5v indica che il display deve funzionare in modalità parallela, se connesso a Gnd indica al 128×64 graphic lcd di funzionare in modalità seriale.
In questo articolo ti mostro il funzionamento in modalità parallela.
I dati arrivano al 128×64 Graphic LCD attraverso gli 8 pin DB0-DB7 connessi ad Arduino.
Collegamento del display 128×64 Graphic LCD
le connessioni sono tante ma non complese, lato display hai la piedinatura mostrata in figura:
lato Arduino il tutorial e gli sketch forniti dalla DFRobot ti suggeriscono come connettere il display 128×64 Graphic LCD ad Arduino:
- DB0-DB3 ai pin 8-11 di arduino
- DB4-DB7 ai pin 4-7
- RS al pin 17 o A3 ( i pin Analogici possono essere anche definiti con la numerazione successiva al pin 13: A0=14, A1=15 …. A5=19)
- R/W al pin 16 o A2
- ENABLE al pin 18 o A4
In un primo momento ho seguito le istruzioni ed il funzionamento è stato immediato, scaricata la libreria per l’IDE 1.0 e caricato lo sketch di esempio “Hello World” ho visto magicamente apparire sul mio display il testo.
Ma come oramai avrai capito non mi piace fare le cose troppo semplici e quindi ho deciso di sperimentare.
Ho cambiato la piedinatura di connessione e ho scelto di non utilizzare i pin 16,17,18 ( alias A2,A3,A4 ) riservandoli ad un futuro progetto di acquisizione segnali provenienti da sensori esterni.
Ho collegato i pin RS, R/W e Enable rispettivamente ai pin 2,3 e 12 rimasti liberi ottenendo la seguente configurazione:
- DB0-DB3 ai pin 8-11 di arduino
- DB4-DB7 ai pin 4-7
- RS al pin 2
- R/W al pin 3
- ENABLE al pin 12
La libreria non può comprendere da sola il cambiamento per cui devi editare il file: LCD12864R.h presente nel path delle librerie Arduino sul mio Mac: Documenti/Arduino/libraries/LCD12864R e modificarla nel modo seguente:
Ovviamente puoi usare la libreria senza modificarla se nel tuo progetto i pin A2,A3 ed A4 non ti servono e lo sketch che ti propongo funziona lo stesso, i collegamenti dovrai eseguirli come da manuale della libreria ( vedi sopra ).
Lo sketch per il display grafico 12864ZW
lo sketch che ti mostro è una rivisitazione dell’esempio proposto con la libreria ufficiale:
/* // # Update the library and sketch to compatible with IDE V1.0 and earlier // # Description: // # The sketch for using LCD12864 in parallel mode LCD Arduino RS = 2; RW = 3; EN = 12; D0 = 8; D1 = 9; D2 = 10; D3 = 11; D4 = 4; D5 = 5; D6 = 6; D7 = 7; PIN15 PSB = 5V; */ #include "LCD12864R.h" #define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] ) unsigned char show0[]="Mauro Alfieri";// unsigned char show1[]="mauroalfieri.it";// unsigned char show2[]="Tutorial LCD12864";// unsigned char show3[]="ST7920 DFRobot ";// void setup() { LCDA.Initialise(); // INIT SCREEN delay(100); } void loop() { LCDA.CLEAR();//Clear screen delay(100); LCDA.DisplaySig(0,0,0x20);//show words delay(100); LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//LOGO delay(100); LCDA.DisplayString(1,0,show1,AR_SIZE(show1));//LOGO delay(100); LCDA.DisplayString(2,0,show2,AR_SIZE(show1));//LOGO delay(100); LCDA.DisplayString(3,0,show3,AR_SIZE(show1));//LOGO while(1); }
La prima parte dello sketch ti indica come collegare Arduino al 128×64 Graphic LCD ed includendo la libreria LCD12864R.h.
Notice
se hai eseguito la mmodificato alla libreria, come suggerito, l’elenco dei pin riportato è corretto.
se non hai modificato la libreria devi collegare RS,R/W ed Enable ai pin A2,A3,A4 come indicato sopra.
la linea 24 è forse il passaggio più complesso in quanto definisce una funzione AR_SIZE( a ) e serve a calcolare la lunghezza dell’array di caratteri che passi al display, per ciascuna riga dovrai definire infatti la posizione X, Y la stringa e la sua lunghezza. Questa linea ti agevola il calcolo;
linee 26-29: definisci le 4 righe che vuoi scrivere sul Display, ricorda che il display funziona a pagine per cui se aggiungi altre linee queste verranno visualizzate su una pagina successiva;
linea 33: inizializza il display con il metodo Inizialise() della classe LCDA servita dalla libreria LCD12864R;
linea 39: pulisci il display con il metodo CLEAR();
linea 41: invia al display 128×64 Graphic LCD DFRobot il segnale di inizio scrittura delle parole da visualizzare;
linee 43-49: scrivi a video le singole righe impostate negli array alle linee 26-29. Dopo ogni linea attendi 100 millisecondi;
Il risultato di questo sketch è visibile in figura:
In un prossimo articolo ti mostrerò come usare la modalità seriale che ha il vantaggio di beneficiare di soli 3 pin arduino per pilotare il display.
Buon divertimento !!!
Prima di inserire un commento, per favore, leggi il regolamento
76 pings
Skip to comment form
[…] di un anno fa avevo dedicato a questo tipo di display un articolo controllandolo con una altra libreria, dedicata, e mediante bus parallelo a 8bit: il panorama è […]