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).
Cosa vedo, breadboard, potenziometri, cavi volanti. Mi vengono in mente le superiori quando realizzavo i circuiti, e odiavo l’assembler, il c e il software in generale (forse perchè chi lo spiegava non ne capiva granchè).
Ora la penso esattamente al contrario 🙂
Eh eh eh.. che ricordi! Al liceo vedevo ben poca roba di questo tipo, ma il mini-lab di casa era comunque pieno di transistor, piccoli integrati… Ricordo ancora quando costruii (con l’aiuto prezioso di mio zio Piero) un modem basato su AMD 7910 per il Packet Radio, 300bps a 28MHz con un Commodore 64… e non mi si dica che l’ADSL e’ lenta!!!!!!!
Effettivamente la basetta ricorda veramente le superiori 😀 Dove si puo’ comprare la basettona “didattica” ? 😀
Effettivamente sarebbe divertente rimettermi a fare queste cose 😀
PS: Usi un mac come tavolo da lavoro? 😛
Ciao Andrea. Se per basettona didattica intendi la breadboard, puoi trovarne parecchie su ebay, oppure su http://www.robot-italy.com (tra i tanti). Arduino lo trovi qui: http://www.pcb-europe.net
Quanto al Mac, essendo io ricchissimo (MA QUANDO MAAAAAAI!!!!) uso un Macbook come base da lavoro, un iPhone come reggisaldatore e un MacPro come incudine per i lavori in ferro battuto! 😀
In realta’ uso il MacBook come base per le foto per due motivi: non ho a casa uno sfondo che mi piace (ho provato il tavolo, la lavatrice [bianca ma troppo riflettente] e il display fa da “schermo obbligato” rispetto alla profondita’. Insomma, piccolo artificio per chi non ha molta abilita’ con la macchina fotografia….
Ciao
bel lavoro
dovresti contribuire la modifica mettendola almeno sul playground
massimo
Ciao Massimo,
grazie! 🙂
Era mia intenzione scriverti non appena avessi sistemato le ultime cosette in sospeso nella libreria (ad esempio, l’inizializzazione). Lo faro’ al piu’ presto (magari gia’ in settimana). Non appena sara’ pronta anche una versione “presentabile” di JARD (https://www.gerdavax.it/mobile/jard-primo-contatto/), vorrei proporla per il playground, se puo’ essere utile alla community.
Sheer genius! Go gerdavax, GO!
Salve, complimenti per il tuo lavoro, molto interessante. Mi interesso di robotica e di elettronica in generale, potresti gentilmente pubblicare (o indicarmi dove posso trovarlo) il circuito per il collegamento tra lcd seriale e il microcontrollore arduino? Grazie in anticipo.
Ciao. Puoi trovare info qui:
https://www.gerdavax.it/data/laboratorio_modellazione_v1_7.pdf
Se ti servissero altri dettagli, non esitare a scrivere.
Ciao!