LCDLibrary per Arduino

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!).

lcdlibrary_sample1_small.jpg

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 &quot40", 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).

lcdlibrary_sample2_small.jpg

9 pensieri su “LCDLibrary per Arduino

  1. Massimiliano Dessì

    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 🙂

  2. gerdavax Autore articolo

    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!!!!!!!

  3. Andrea A.

    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? 😛

  4. gerdavax Autore articolo

    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….

  5. gerdavax Autore articolo

    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.

  6. loginmatrix

    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.

Lascia un commento