Come collegare un display LCD ad Arduino

Il Display LCD è un interessante strumento, utile per interfacciare il mondo digitale con quello umano. Con questo strumento, sarà possibile leggere unità fisiche, come l’attuale temperatura in casa, l’ora, lo stato di accensione di un LED, oppure potremo comporre testo, scritte scorrevole e tanto altro ancora.

Partiamo dalla scelta dell’LCD. Indipendentemente dal numero di caratteri e linee quello che più è importante è il tipo di processore e driver che il costruttore del tuo LCD ha utilizzato, quello in figura è un display LCD 2×16 con driver Hitachi HD44780.

Di seguito alcuni display da poter acquistare su Amazon.

Prima di collegarlo ad Arduino è necessario distinguere i display di questo tipo in due categorie quelli a 14 contatti e quelli a 16 contatti, la differenza è che questi ultimi sono retroilluminati e la luminosità viene regolata agendo sul pin 15 e 16.

Descrizione pinout LCD

Pin Display LCD Descrizione
1 VssGND – Massa
2 Vcc+ 5V
3 VeeContrasto
4 RSsegnale di selezione registro, pin 12 di Arduino
5 R/W segnale Read/Write. 0 scrivi 1 leggi
6 Enable (E)per abilitare la scrittura nei registri, pin 11 di Arduino
7 DB0linea dati 0, non usato
8 DB1linea dati 1, non usato
9 DB2linea dati 2, non usato
10 DB3linea dati 3, non usato
11 DB4linea dati 4 collegato al pin 5 di Arduino
12 DB5linea dati 5 collegato al pin 4 di Arduino
13 DB6linea dati 6 collegato al pin 3 di Arduino
14 DB7linea dati 7 collegato al pin 2 di Arduino
15 Led+terminale positivo per la retroilluminazione
16 Led-terminale negativo per la retroilluminazione

Schema di collegamento

Avrai notato che i pin 7, 8, 9 e 10 sono indicati come non collegati, i display di questo tipo possono essere pilotati con 4 o 8 bit, solitamente essi sono pilotati con 4 bit risparmiando pin di Arduino da destinare ad altri scopi, la differenza tra una modalità e l’altra è la velocità di trasferimento dell’informazione al display, non trovandoti in ambienti critici la modalità a 4 bit è sufficiente ed ha il vantaggio appena descritto. Il potenziometro collegato al pin 3 del LCD è di 10 kOhm e ti permette di regolare il contrasto del display, mentre quello collegato al pin 15 serve per la regolazione della luminosità dei display a 16 pin retroilluminati.

Sketch 1

/*
  Questo programma mostra come usare il Display LCD per mostrare la parola "Hello World" e tempo da cui è stato accesso

  Il Circuito:
   LCD RS pin to digital pin 12
   LCD Enable pin to digital pin 11
   LCD D4 pin to digital pin 5
   LCD D5 pin to digital pin 4
   LCD D6 pin to digital pin 3
   LCD D7 pin to digital pin 2
   LCD R/W pin to ground
   10K resistor:
   ends to +5V and ground
   wiper to LCD VO pin (pin 3)

  Questo esempio è tratto dal sito di Arduino

  http://www.arduino.cc/en/Tutorial/LiquidCrystal

*/

// include the library code:
#include <LiquidCrystal.h>

// Viene inzializzata la libreria del Display con i relativi PIN a cui è connesso il Display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Stampa a video la parola "hello, world!"
  lcd.print("hello, world!");
}

void loop() {
  // Imposta il cursore alla colonna 0, riga 1
  // (nota: line 1 è la seconda riga, dal momento che il conteggio inizia dallo 0):
  lcd.setCursor(0, 1);
  // Stampa a video i secondi passati dal momento del reset
  lcd.print(millis() / 1000);
}

Sketch 2

#include <LiquidCrystal.h>

// initialize the library with
// the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
}

void loop() {
  // Print a message to the LCD.

  lcd.setCursor(0, 0);  // set the cursor to column 0, line 0
  lcd.print("Ciao Ragazzi :)");
  lcd.setCursor(0, 1);  // set the cursor to column 0, line 1
  lcd.print("CGElettronica");
}

Sketch 3 (Scritta scorrevole)

// include the library code:
#include <LiquidCrystal.h>

// Viene inizializzata la libreria del Display con i relativi PIN a cui è connesso il Display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.print("Ciao a tutti da");   //Stampa a video "Ciao a tutti da"
  lcd.setCursor(0, 1);
  lcd.print("GCElettronica.blogspot.it");   //Stampa a video "GCElettronica.blogspot.it"
}

void loop() {
  for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    lcd.scrollDisplayLeft();
    delay(400);
  }
}

Se siete arrivati fin qui, vi ringrazio e vi svelo un trucco per poter risparmiare i PIN digitali di Arduino e rendere i collegamenti tra display e Arduino molto più semplici, il trucco viene svelato su questo articolo. 😀

Video