Corso base di Arduino: colleghiamo un display LCD

Con Arduino e le giuste librerie, implementare un display LCD è realmente un gioco da ragazzi. Vediamo come procedere.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

I display a cristalli liquidi con specifiche Hitachi HD44780 sono molto utilizzati, in qualsiasi progetto. La semplicità di collegamento elettrico e il relativo pilotaggio, uniti alla loro economicità, permette una rapida e sicura progettazione.

Le connessioni

Il display LCD può essere configurato con un bus di dati a 8 bit o a 4 bit. Nell'esempio che segue utilizziamo la seconda modalità, che ci permette di risparmiare ben quattro preziose porte di I/O. La figura 1 mostra il cablaggio adottato per le nostre prove.

figura 1 cablaggio lcd
Figura 1: il collegamento elettrico del display LCD

In particolare si notano le seguenti connessioni:

  • Il display è alimentato con una tensione positiva continua di 5V ai pin VDD e VSS. Si può attingere tale alimentazione direttamente dalla scheda Arduino o altra fonte esterna
  • Il pin VEE del display è collegato ad un partitore resistivo variabile come, ad esempio, quello formato tramite un potenziometro o un trimmer. Variando la tensione a questo pin è possibile decidere il contrasto del modulo LCD
  • Il pin RS del display è direttamente collegato alla porta 12 di Arduino
  • Il pin R/W del display è collegato a massa, per impostare la modalità di ricezione dei dati dall'esterno
  • Il pin E del display è collegato alla porta 11 di Arduino

Infine, i pin D4, D5, D6 e D7 del display sono connessi alle porte 2, 3, 4 e 5 di Arduino. Essi permettono il transito dei comandi e dei dati da visualizzare

Primo sketch: Hello world

Il primo listato ha il compito di prendere confidenza con il display LCD. Grazie all'utilizzo della libreria "LiquidCrystal", la scrittura dei programmi risulta molto semplice. Il listato che segue ha il solo scopo di configurare il modulo a cristalli liquidi, di descrivere le varie connessioni elettriche e di scrivere due frasi, in altrettante righe. La figura 2 riporta tale sketch preliminare.

figura 2 sketch hello world
Figura 2: lo sketch "Hello world"

Il programma si basa sulle seguenti considerazioni:

  • #include <LiquidCrystal.h> deve essere riportato sempre a inizio del listato, per includere i prototipi di funzione e le costanti di libreria
  • LiquidCrystal lcd(12,11,5,4,3,2);  crea un'istanza alla classe LiquidCrystal, specificando, altresì, il numero delle porte collegate di Arduino. Tutta la comunicazione con il display avviene, pertanto, tramite l'utilizzo di un oggetto
  • lcd.begin(16,2); serve per impostare la visualizzazione su 16 colonne e 2 righe
  • lcd.setCursor(0,0); tale metodo posiziona il cursore alle coordinate specificate tra parentesi
  • lcd.print("Hello world"); visualizza semplicemente la stringa passata sul display

Il programma viene eseguito solo una volta, essendo il codice operativo inserito nella funzione setup(). La figura 3 mostra il relativo output.

figura 3 output primo sketch
Figura 3: l'output del primo sketch

Secondo sketch: visualizzare le variabili

È possibile, ovviamente, visualizzare anche le variabili e non solo le stringhe. Il prossimo sketch mostra sul display un conteggio progressivo da 1 fino a 100. Prima di ogni suo inizio l'area di visualizzazione viene cancellata, grazie all'azione del metodo clear(). La numerazione avviene all'infinito, dal momento che essa si trova nella funzione loop(). La figura 4 mostra lo sketch assieme al suo risultato sul display.

figura 4 secondo sketch

Segue un elenco di funzioni legate all'utilizzo del display LCD:

  • LiquidCrystal();
  • begin();
  • clear();
  • home();
  • setCursor();
  • write();
  • print();
  • cursor();
  • noCursor();
  • blink();
  • noBlink();
  • display();
  • noDisplay();
  • scrollDisplayLeft();
  • scrollDisplayRight();
  • autoscroll();
  • noAutoscroll();
  • leftToRight();
  • rightToLeft();
  • createChar().

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.