🖥 Arduino • LCD 16×2 • LiquidCrystal

Display LCD 16×2 con Arduino: collegamenti e codice

Impariamo a collegare un display LCD 16×2 non I2C ad Arduino e a visualizzare testo e dati usando la libreria LiquidCrystal.

Difficoltà Principiante
Display LCD 16×2
Libreria LiquidCrystal
In poche parole: Arduino comunica con il display attraverso più pin digitali. Nel primo rigo mostriamo un messaggio, mentre nel secondo visualizziamo i secondi trascorsi dall’avvio della scheda.

Cosa imparerai

  • come collegare un display LCD 16×2 non I2C;
  • come usare la libreria LiquidCrystal.h;
  • come inizializzare un display con lcd.begin();
  • come visualizzare testo con lcd.print();
  • come spostare il cursore con lcd.setCursor();
  • come mostrare il tempo trascorso usando millis().

Il display LCD 16×2

Un display LCD 16×2 può mostrare 16 caratteri per riga su due righe. In questo progetto utilizziamo la versione classica parallela, senza interfaccia I2C.

La regolazione del contrasto viene effettuata tramite un potenziometro da 10 kΩ, collegato al pin di contrasto del display.

Piedinatura display LCD 16x2 Arduino

Piedinatura del display LCD 16×2 utilizzato nel progetto.

Materiale necessario

🔌 Arduino Uno
🖥 Display LCD 16×2
🎛 Potenziometro da 10 kΩ
🧩 Breadboard
🔗 Cavetti jumper

🧰 Kit Arduino consigliato

Molti progetti del sito utilizzano componenti elettronici di base come display, LED, resistenze, sensori e breadboard. Se stai iniziando, un kit completo può essere la scelta più comoda.

👉 Guarda il kit Arduino consigliato

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

📘 Vuoi imparare Arduino passo dopo passo?

Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.

👉 Scopri i miei libri su Arduino

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Collegamenti del display

Pin LCD Funzione Collegamento
RSRegister SelectArduino pin 12
EEnableArduino pin 11
D4DatiArduino pin 5
D5DatiArduino pin 4
D6DatiArduino pin 3
D7DatiArduino pin 2
R/WLettura/ScritturaGND
VSSMassaGND
VDDAlimentazione5V
VOContrastoCursore potenziometro 10 kΩ
Schema Arduino con display LCD 16x2

Schema di collegamento del display LCD 16×2 ad Arduino.

La libreria LiquidCrystal

La libreria LiquidCrystal permette di gestire facilmente display compatibili con il controller HD44780 e simili.

Inizializzazione del display
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Codice Arduino commentato

Display LCD 16×2 con Arduino
// ==========================================================
// DISPLAY LCD 16x2 CON ARDUINO
// Visualizzazione di un messaggio e del tempo trascorso
// ==========================================================

// Include la libreria per il controllo del display LCD
#include <LiquidCrystal.h>

// Crea l'oggetto lcd indicando i pin collegati ad Arduino:
// RS = 12
// E  = 11
// D4 = 5
// D5 = 4
// D6 = 3
// D7 = 2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

  // Inizializza il display specificando:
  // 16 colonne e 2 righe
  lcd.begin(16, 2);

  // Scrive il messaggio sulla prima riga
  lcd.print("Salve mondo!");

}

void loop() {

  // Sposta il cursore:
  // colonna 0, riga 1
  // La riga 1 corrisponde alla seconda riga del display
  // perché il conteggio parte da 0
  lcd.setCursor(0, 1);

  // millis() restituisce i millisecondi trascorsi
  // dall'avvio di Arduino.
  // Dividendo per 1000 otteniamo i secondi.
  lcd.print(millis() / 1000);

}

Il codice spiegato passo passo

1

Includiamo LiquidCrystal.h

La libreria contiene le funzioni necessarie per comunicare con il display.

2

Definiamo i pin

LiquidCrystal lcd(12, 11, 5, 4, 3, 2) specifica quali pin di Arduino sono collegati ai segnali RS, E e D4-D7.

3

Inizializziamo il display

lcd.begin(16, 2) comunica alla libreria che stiamo utilizzando un display con 16 colonne e 2 righe.

4

Scriviamo il messaggio

lcd.print("Salve mondo!") mostra il testo sulla prima riga.

5

Spostiamo il cursore

lcd.setCursor(0, 1) porta il cursore all’inizio della seconda riga.

6

Visualizziamo i secondi

millis() / 1000 converte il tempo trascorso dall’accensione di Arduino in secondi.

Se il display è acceso ma non vedi il testo: prova prima di tutto a ruotare lentamente il potenziometro del contrasto. È uno dei problemi più comuni con i display LCD 16×2.

Simulazione online

▶️ Apri la simulazione Tinkercad

Scarica lo sketch

⬇️ Scarica arduino_display_lcd.ino

Debug rapido

  • regola il contrasto con il potenziometro da 10 kΩ;
  • controlla RS, E e i quattro pin dati D4-D7;
  • verifica che R/W sia collegato a GND;
  • controlla alimentazione 5V e GND;
  • se compaiono solo blocchi neri, ricontrolla collegamenti e inizializzazione;
  • assicurati di usare la stessa disposizione dei pin definita nello sketch.

Varianti del progetto

  • visualizzare la temperatura di un sensore;
  • mostrare data e ora con un modulo RTC;
  • creare un contatore;
  • visualizzare valori analogici;
  • realizzare un semplice menu con pulsanti;
  • passare a un display LCD con interfaccia I2C per ridurre il numero di fili.

Cosa devi ricordare

  • Il display 16×2 mostra 16 caratteri su 2 righe.
  • La libreria LiquidCrystal semplifica il controllo del display.
  • lcd.begin(16, 2) inizializza il modulo.
  • lcd.print() visualizza testo o valori.
  • lcd.setCursor() sposta la posizione di scrittura.
  • Il potenziometro regola il contrasto del display.

Domande frequenti

Perché vedo solo quadratini neri?

Controlla il contrasto, i collegamenti dei pin RS/E/D4-D7 e l’inizializzazione del display.

Posso cambiare la scritta “Salve mondo!”?

Sì. Basta modificare il testo contenuto in lcd.print().

Posso mostrare un numero?

Sì. lcd.print() può visualizzare anche variabili numeriche, valori di sensori e risultati di calcoli.

È meglio un display I2C?

Un modulo I2C utilizza meno pin di Arduino e semplifica il cablaggio, ma questo progetto è utile per capire il funzionamento del collegamento parallelo classico.