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.
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 del display LCD 16×2 utilizzato nel progetto.
Materiale necessario
🧰 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 consigliatoLink 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 ArduinoLink 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 |
|---|---|---|
| RS | Register Select | Arduino pin 12 |
| E | Enable | Arduino pin 11 |
| D4 | Dati | Arduino pin 5 |
| D5 | Dati | Arduino pin 4 |
| D6 | Dati | Arduino pin 3 |
| D7 | Dati | Arduino pin 2 |
| R/W | Lettura/Scrittura | GND |
| VSS | Massa | GND |
| VDD | Alimentazione | 5V |
| VO | Contrasto | Cursore potenziometro 10 kΩ |
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.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Codice Arduino commentato
// ==========================================================
// 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
Includiamo LiquidCrystal.h
La libreria contiene le funzioni necessarie per comunicare con il display.
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.
Inizializziamo il display
lcd.begin(16, 2) comunica alla libreria che stiamo
utilizzando un display con 16 colonne e 2 righe.
Scriviamo il messaggio
lcd.print("Salve mondo!") mostra il testo sulla prima riga.
Spostiamo il cursore
lcd.setCursor(0, 1) porta il cursore all’inizio
della seconda riga.
Visualizziamo i secondi
millis() / 1000 converte il tempo trascorso
dall’accensione di Arduino in secondi.
Simulazione online
▶️ Apri la simulazione TinkercadScarica lo sketch
⬇️ Scarica arduino_display_lcd.inoDebug 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
LiquidCrystalsemplifica 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.

