|
Collegare un LCD a Arduino
Introduzione
Esistono diversi tipi di display da interfacciare ad arduino e si distinguono per il numero di righe e il numero di colonne. I display più classici sono quelli 16 colonne x 2 righe, ma ne esistono anche da 20x4 e da 128x64.
Interfacciarsi con un display è molto semplice, basterà scaricare la libreria LiquidCrystal che potrete trovare anche qui e seguire lo schema di collegamento riportato qui sotto. Vedremo le istruzioni e qualche sketch successivamente. Lo schema fa riferimento ad un display 16x2.

Pin del display
- Vcc: +5V
- Vss: GND
- Vee: Contrasto, girando il potenziometro vedrete una riga riempirsi di rettangolini
- RS: Dice al microcontrollore del display se il comando che inviamo da Arduino è un carattere Ascii oppure un bit di comando, come ad esempio uno spostamento del cursore. Arduino pin 6
- R/W: è il pin che serve a leggere/scrivere sul display. Noi vogliamo scrivere sul display quindi lo collegheremo a massa dato che Write è attivo basso.
- E: Pin che usiamo per dire all LCD quando i dati sono pronti per essere letti. Arduino pin 7
- DB0: non usato
- DB1: non usato
- DB2: non usato
- DB3: non usato
- DB4: dati Arduino pin 8
- DB5: dati Arduino pin 9
- DB6: dati Arduino pin 10
- DB7: dati Arduino pin 11
- LED+: Con il Potenziometro cambieremo la luce di sfondo. Possiamo collegare questo pin ad un uscita pwm di arduino per regolare l'intensità luminosa da programma.
- LED-: GND
Nella libreria liquid crystal ci sono molti sketch di esempio, voi non dovrete far altro che cambiare l'istruzione
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); con LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
Istruzioni Libreria Liquid Crystal
- LiquidCrystal();
-
- LiquidCrystal(rs, enable, d4, d5, d6, d7)
- LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
- LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
- LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Con questa istruzione definiamo i pin connessi ad Arduino. Un errore in questa istruzione potrebbe portare a non visualizzare nulla sul display, quindi attenzione.
ES: LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
- Begin();
-
- Begin(#Colonne, #righe);
Con questa istruzione definiamo il numero di righe e di colonne del nostro display.
ES: lcd.begin(16,2);
- Clear();
Questa istruzione pulisce il display dai caratteri scritti in precedenza
ES: lcd.clear();
- home();
Posiziona il cursore nella casella in alto a sinistra.
ES: lcd.home();
- setCursor(#colonne,#righe);
Setta il cursore nella posizione che vogliamo, quindi dopo questa istruzione inizieremo a scrivere in un dato punto del display.
Es:lcd.setcursor(0,0); Equivalente di home.
- write(data);
Scrive sul display il carattere associato ad un certo codice HEX.
- print(data);
Si usa per scrivere sul display, può essere usata anche con la sintassi print(data,base); in cui se data è esadecimale, base sarà 16, binario base 2 ecc ecc. Data può essere un int, byte, long int, char oppure string.
ES: lcd.print("hello world");
- cursor(); e noCursor();
cursor(); Mostra un carattere underscore nella casella in cui verrà scritto il prossimo carattere. noCursor(); nasconde il cursore.
- blink(); e noBlink();
blink(); mostra un cursore lampeggiante, mentre noBlink(); lo nasconde.
- display(); e noDisplay();
Abilita e disabilita il display.
- scrollDisplayLeft(); e scrollDisplayRight();
Queste istruzioni si usano per shiftare a destra(right) o a sinistra(left) il testo ed il cursore di uno spazio.
- autoscroll(); e noAutoscroll();
Setta il display in modalità autoscroll, questa modalità scriverà ogni nuovo carattere nella stessa posizione del precedente e il precedente sarà shiftato, se stiamo scrivendo in modalità da sinistra a destra (di default), il testo sarà shiftato a sinistra.Se stiamo scrivendo in modalità da destra a sinistra, il display scorrerà verso destra. noAutoscroll(); esce dalla modalità autoscroll.
- LeftToRight(); e RightToLeft();
LeftToRight(); setta la modalità di scrittura da sinistra a destra (default), mentre RightToLeft(); setta la modalità di scrittura da destra a sinistra.
- createChar(num,data);
Crea un carattere personalizzato, num varia da 0 a 7 e indicizza i caratteri personalizzati. Data è una mappa dei bit del nuovo carattere.
Es:
byte smiley[8] = { B00000, B10001, B00000, B00000, B10001, B01110, B00000, };
void setup() {
lcd.createChar(0, smiley);
lcd.begin(16, 2);
lcd.write(0);
}
Sketch Display Seriale
Includete la libreria LiquidCrystal.h
/*
LiquidCrystal Library - Serial Input
Demonstrates the use a 16x2 LCD display. The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.
This sketch displays text sent over the serial port
(e.g. from the Serial Monitor) on an attached LCD.
The circuit:
* 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
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 25 July 2009
by David A. Mellis
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
// include the library code:
// 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 rows and columns:
lcd.begin(16, 2);
// initialize the serial communications:
Serial.begin(9600);
}
void loop()
{
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
![]()