GUIDA 13: Arduino, Display LCD 16×2

In questo articolo vediamo un semplice esempio di utilizzo di un display LCD. Quello incluso nel kit di Arduino è un display LCD 16×2: è possibile scrivere fino a 16 caratteri su ognuna delle due righe. Collegheremo il display nella modalità a 4 bit, utilizzando 4 pin degli 8 che svolgono la funzione di trasferimento dati. Dal datasheet del display è possibile capire i collegamenti. Li scrivo comunque anche qui:

  • Pin 1: GND
  • Pin 2: 5v
  • Pin 3: variabile, collegato a un potenziometro per variare il contrasto
  • Pin 4 (register select): serve per comunicare al display quando si scrivono dei dati; collegato al pin 12
  • pin 5: GND
  • pin 6 (Read/Write): per dichiarare la modalità di lettura o scrittura; collegato al pin 11
  • pin 7 – 8 – 9 – 10 non collegati; ne vengono usati 4 in quanto la modalità di comunicazione è a 4 bit
  • pin 11 – 12 – 13 – 14 collegati rispettivamente ai pin 5 – 4 – 3 – 2 di Arduino
  • pin 15: collegato a VCC (5V) con una resistenza da 220 ohm; serve per l’alimentazione del LED di retroilluminazione
  • pin 16: collegato a GND; serve per la’alimentazione del LED di retroilluminazione

schema

 

Vediamo ora lo sketch.


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("Contasecondi");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
}

Come prima cosa includiamo la libreria “LquidCrystal.h”. Una libreria contiene istruzioni che possiamo scrivere nell’IDE. Le librerie sono accessibili dalla sottocartella “libraries” della cartella “Arduino”, situata sul disco in cui è installato il programma. Nella seconda riga ho assegnato al display il nome “lcd”, indicando i pin a cui era connesso con Arduino. Nel setup inizializziamo il display definendone il tipo (16×2) e stampiamo la scritta “Contasecondi”, con la funzione print(). Questa funzione permette infatti di stampare un testo su un display. Nel loop impostiamo il cursore del display sulla seconda riga nella prima colonna. Per fare questo usiamo la funzione lcd.setCursor(). Tra le parentesi dobbiamo scrivere prima la colonna e, separata da una virgola la riga su cui posizionarsi. Il numero “0” rappresenta la prima colonna/riga. Scrivendo lcd.setCursor(0, 1); sposteremo il cursore sulla seconda riga. Con l’ultima riga di codice creiamo sulla seconda riga un contatore di secondi. Con lcd.print() stampiamo una cifra che aumenta ogni secondo. La funzione millis() restituisce il tempo, espresso in millisecondi, che è trascorso da quando Arduino si è acceso. Dividendolo per 1000 otterremo questo tempo in secondi.