Display LCD 20×4 – HD44780 compliant – Usiamolo con Arduino
Ecco l’oggetto acquistato da http://www.sureelectronics.net:
Product Number
|
DE-LM005
|
Product Name
|
2004 LCD Module White Characters Blue Backlight HD44780
|
Display Format:
|
20 Characters X 4 Lines
|
Character Format
|
5 X 8 dots
|
Drive Method
|
1/16 Duty , 1/5 Bias
|
LCD Type
|
STN Blue
|
LED Backlight
|
White
|
Driving Voltage
|
single +5V supply
|
Viewing Direction
|
6 o’clock
|
Operating Temperature
|
-20 celi ~ +60 celi
|
Module Size
|
98 mm X 55 mm X 14 mm
|
View Area
|
76 mm X 26 mm
|
Item Net Weight
|
90g / 3.2oz
|
Nell’acquisto, oltre al display, è inclusa l’interfaccia USB (Demo Board). Saldiamo un paio di connettori come indicato nelle foto e colleghiamo il cavetto USB al PC. Subito abbiamo la conferma che il display funzioni. L’interfaccia USB, che alloggia un PIC16F54, è programmata da sureelectronics per visualizzare un breve messaggio di benvenuto.
Ma vogliamo farlo funzionare con Arduino.
Nella foto si vede lo schema dei collegamenti.
Questo è la funzione dei PIN del display:
Numero del pin | Funzione del pin |
---|---|
1 | Vss (Massa) |
2 | Vcc (5V) |
3 | Vee (Controllo contrasto, da 2V a -3V secondo i tipi) |
4 | R\S (0 per selezionare l’invio di un comando, 1 per i dati) |
5 | R\W (0 per selezionare la scrittura di dati o comandi, 1 per la lettura dei dati o dello stato) |
6 | E (inizia il ciclo di scrittura o lettura, secondo R/S e R/W) |
7 | D0 (Bus dati) |
8 | D1 (Bus dati) |
9 | D2 (Bus dati) |
10 | D3 (Bus dati) |
11 | D4 (Bus dati) |
12 | D5 (Bus dati) |
13 | D6 (Bus dati) |
14 | D7 (Bus dati) |
15 | A (Vcc retroilluminazione, se presente) |
16 | K (Vss retroilluminazione, se presente) |
Ecco il codice da usare per un semplice test:
#include <LiquidCrystal.h> /* LiquidCrystal Library Demonstrates the use a 20x4 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 prints "Hello World!" to the LCD and shows the time. The circuit: * LCD backlight on pin 13 * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D0 pin to digital pin 9 * LCD D1 pin to digital pin 8 * LCD D2 pin to digital pin 7 * LCD D3 pin to digital pin 6 * 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: * 100ohm 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 22 Nov 2010 by Tom Igoe modified 02 Ago 2011 by Tonino Fazio This example code is in the public domain. original: http://www.arduino.cc/en/Tutorial/LiquidCrystal */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 9,8,7,6, 5, 4, 3, 2); int ledPin = 13; // LED connected to digital pin 13 int inputPin = A5; // LED connected to digital pin 13 byte smiley[8] = { B00000, B10001, B00100, B00100, B10001, B01110, B00000, }; void setup() { pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); // set up the LCD's number of columns and rows: lcd.begin(20, 4); lcd.createChar(0, smiley); } int a=0; void loop() { lcd.setCursor(2, 0); lcd.print("a:"+ String(a++)); lcd.setCursor(0, 2); lcd.print("www.xorse.it"); lcd.setCursor(19, 3); //lcd.write(0); delay(200); }
Bisogna notare una particolarità nella programmazione del display, che inizialmente può causare qualche perplessità. Ogni riga è formata da 20 caratteri. Se la stringa inviata al display contiene più di 20 caratteri, quelle eccedenti vanno a capo, non nella riga successiva ma in quella dopo. I caratteri infatti sono organizzati in due banchi da 40. Il primi 20 sono sulla prima riga ed i successivi 20 sulla terza. Il secondo banco invece ha i propri caratteri sulla seconda e sulla quarta riga. Nulla di grave, ma può capitare di doverne tenere conto in fase di programmazione.
Per l’uso completo della libreria LiquidCrystal si rimanda alla pagina ufficiale, che si può trovare semplicemente cercando: “LiquidCrystal Arduino” su google.