I display basati sul chip Hitachi HD44780 sono molto economici e semplici da pilotare, motivi per i quali sono largamente utilizzati nella realizzazione di prodotti industriali e di taglio più hobbistico.
Questi oggetti sono largamente adottati anche dalla comunità degli utilizzatori di Arduino (compreso il sottoscritto!).
Sfortunatamente, però, la libreria presente sul sito ufficiale di Arduino (http://www.arduino.cc/en/Tutorial/LCDLibrary) non compila con le ultime versioni dell’ambiente di sviluppo e non gestisce i display con 2 linee di testo. In attesa di avere un po’ di tempo per aggiungere qualche funzionalità alla libreria (ad esempio, la possibilità di definire in fase di inizializzazione il numero di righe o effettuare il controllo sul numero di colonne), ho modificato leggermente il sorgente di quella esistente affinchè fosse comaptibile con l’IDE attuale e supportasse display 2×40.
La libreria e’ disponibile all’indirizzo:
https://www.gerdavax.it/data/LCDLibrary_2x40.zip
Il file zip deve essere decompresso e la cartella LiquidCrystal
in esso contenuta deve essere copiata nella directory hardware/libraries
all’interno dell’installazione di Arduino.
Ho modificato il metodo per la stampa di una stringa di caratteri, rinominandolo println
, analogo a quello per l’output sulla porta seriale. L’utilizzo è immediato:
#include
LiquidCrystal lcd = LiquidCrystal();
void setup(void)
{
lcd.init();
lcd.clear();
}
void loop(void)
{
lcd.commandWrite(128);
lcd.println("www.gerdavax.it");
lcd.commandWrite(168);
lcd.println("Visit my blog!");
}
Per scrivere sulla prima riga è necessario inviare il comando 128, che colloca il cursore in posizione 0 oppure cancellare il display. La prima è considerata completa al quarantesimo carattere, dopodichè il display scrive nella seconda riga. Per posizionarsi sul questa (posizione "40", ovvero quaranta caratteri dopo l’inizio della prima riga) è sufficiente inviare il comando 168 (128 + 40);
Per il cablaggio del display ho fatto riferimento alla pagina riportata sul sito ufficiale di Arduino:
LCD |
Arduino |
E (Enable) |
2 |
DB0 |
3 |
DB1 |
4 |
DB2 |
5 |
DB3 |
6 |
DB4 |
7 |
DB5 |
8 |
DB6 |
9 |
DB7 |
10 |
RW (Read/Write) |
11 |
RS (Register Select) |
12 |
pi&uagrave; ovviamente l’alimentazione per il LED di retroilluminazione (nel mio esemplare indicato semplicemente come PIN 15 e PIN 16) e la tensione variabile prelevata dal potenziometro per la regolazione del contrasto (nel mio esemplare individuato dal PIN V0).