Sei sulla pagina 1di 2

// Arduino: display lcd con driver LCMI 602

18bis - display lcd con driver LCMI 602

Nel precedente esercizio 18 abbiamo visto che per pilotare un display lcd sono necessarie almeno
sei porte digitali. Con queste premesse, vista la complessita dei collegamenti e la relativa penuria
di porte disponibili su arduino uno, il display digitale pur interessante in se e, di fatto, un oggetto
quasi inutilizzabile.
E stato pero creato un driver, chiamato LCMI 602 IIC (o 2C) in grado di gestire il display
utilizzando solo due porte analogiche (per eventuali altri tipi di driver e possibile trovare qualche
utile suggerimento qui (click) ).
Con questo driver e con una nuova libreria (che sostituisce le preesistenti librerie per i display lcd)
e possibile gestire con semplicita ogni problematica duso.
In questo esercizio oltre allutilizzo del suddetto driver viene anche proposto anche lutilizzo del
monitor seriale come mezzo di trasmissione dalla tastiera ad Arduino (per accedere al monitor
seriale collegare il cavo usb e poi andare nellIDE-> strumenti-> monitor seriale, sul quale va
flaggato il no fine riga).
Prima di compilare il programma bisogna:
Caricare lultima versione della nuova libreria di gestione del display a cristalli liquidi,
reperibile qui (click).
Installarla mantenendola compressa (IDE-> sketch-> importa libreria-> add library->
individuare la cartella di download-> fare doppio click sulla libreria liquidCrystal_Vx.x.x.zip)
cancellare ogni altra preesistente libreria di gestione dei display LCD (la nuova libreria ne
incorpora le funzioni) andando in c:->programmi (x86) -> arduino->libraries, selezionando
la vecchia libreria (dovrebbe chiamarsi liquidcrystal) e premendo il tasto canc.
riavviare lIDE per rendere operativa la nuova libreria

Materiali

Un display LCD con driver LCMI 602 IIC


Quatto cavi

Schema

Collegare il modulo lcd allalimentazione da 5 volt ed alla terra; collegare il pin SDA alla
porta analogica 4 ed il pin SCL alla porta analogica 5
Agire eventualmente (con un cacciavite) sulla resistenza variabile presente sul driver per
regolare il contrasto e rendere leggibili i caratteri

// Arduino: display lcd con driver LCMI 602

Programma
/* programma copiato da: http://arduino-info.wikispaces.com/LCD-Blue-I2C
Schema: collegare il display all'alimentazione ed alla terra; collegare la porta analogica 4 al pin
SDA e la porta analogica 5 al pin SCL */
#include <Wire.h> // libreria wire presente, di fault, nell'IDE
#include <LiquidCrystal_I2C.h> // libreria di gestione del display lcd
//
addr en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // definisce la tipologia del display
void setup()
{
Serial.begin(9600); // inizializza la comunicazione seriale per poter ricevere, dalla tastiera del pc
// (collegato con un cavo usb), i valori da esporre sul display
lcd.begin(16,2);
// inizializza il display (16 caratteri per due righe)
for(int i = 0; i< 3; i++) //accende l'illuminazione dello sfondo e lo fa lampeggiare per tre volte
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight();
// termina lo show iniziale mantenendo illuminato lo sfondo
lcd.setCursor(0,0); // posiziona il cursore all'inizio della prima riga (carattere 0 e riga 0)
lcd.print("buongiorno");
delay(1000);
lcd.setCursor(0,1); // posiziona il cursore all'inizio della seconda riga (carattere 0 e riga 1)
lcd.print("ribuongiorno");
delay(4000);
// visualizza i caratteri digitati da tastiera (ricordarsi di impostare il monitor su "No Line Ending")
lcd.clear();
// pulisce il display
lcd.setCursor(0,0);
// posiziona il cursore sul carattere 0 della riga 0
lcd.print("usa monitor srle");
lcd.setCursor(0,1);
lcd.print("usa tastiera pc");
}
void loop()
{
{
if (Serial.available())
{ // se ci sono dei caratteri in arrivo dalla porta seriale
delay(100);
// attende 1/10 di secondo per consentire l'arrivo di tutti i caratteri
lcd.clear();
// pulisce lo schermo
while (Serial.available() > 0)
{ // se sono arrivati dei caratteri
lcd.write(Serial.read());
// scrive sul display cio che e appena arrivato
}
}
}
}