In questo tutorial, ti spiego come impostare un LCD su un Arduino e vi mostrerà tutti i diversi modi è possibile programmarlo. Ti mostrerò come stampare il testo, scorrere il testo, creare caratteri personalizzati, lampeggiare il testo e posizionare il testo. Sono ottimi per qualsiasi progetto che emette dati e possono rendere il tuo progetto molto più interessante e interattivo.
Il display che sto usando è un display LCD 16×2 che ho comprato per circa 5 5. Ci si potrebbe chiedere perché si chiama un 16×2 LCD., La parte 16×2 significa che il display LCD ha 2 linee e può visualizzare 16 caratteri per riga. Pertanto, uno schermo LCD 16×2 può visualizzare fino a 32 caratteri contemporaneamente. È possibile visualizzare più di 32 caratteri con scorrimento però.
Il codice in questo articolo è scritto per LCD che utilizzano il driver standard Hitachi HD44780. Se il tuo LCD ha 16 pin, probabilmente ha il driver Hitachi HD44780. Questi display possono essere cablati in modalità a 4 bit o in modalità a 8 bit. Il cablaggio del display LCD in modalità a 4 bit è solitamente preferito poiché utilizza quattro fili in meno rispetto alla modalità a 8 bit., In pratica, non c’è una differenza notevole nelle prestazioni tra le due modalità. In questo tutorial, collegherò il display LCD in modalità a 4 bit.
Collegamento del display LCD all’Arduino
Ecco uno schema dei pin sul display LCD che sto usando. Le connessioni da ciascun pin all’Arduino saranno le stesse, ma i pin potrebbero essere disposti in modo diverso sul display LCD., Essere sicuri di controllare la scheda tecnica o cercare etichette sul display LCD:
Inoltre, potrebbe essere necessario saldare a 16 pin LCD prima di collegarlo ad una breadboard. Seguire lo schema qui sotto per collegare il display LCD per il vostro Arduino:
La resistenza nel diagramma sopra imposta la luminosità della retroilluminazione. Un valore tipico è 220 Ohm, ma anche altri valori funzioneranno., Resistori più piccoli renderanno la retroilluminazione più luminosa.
Il potenziometro viene utilizzato per regolare il contrasto dello schermo. Io di solito uso un potenziometro Ohm 10K, ma altri valori funzioneranno anche.
Ecco il datasheet del 16×2 LCD con tutte le informazioni tecniche sul display:
16×2 LCD Foglio dati
la Programmazione di Arduino
Tutto il codice riportato di seguito utilizza la libreria LiquidCrystal che viene pre-installato con l’IDE di Arduino., Una libreria è un insieme di funzioni che possono essere facilmente aggiunte a un programma in un formato abbreviato.
Per poter utilizzare una libreria, deve essere inclusa nel programma. La riga 1 nel codice seguente lo fa con il comando#include <LiquidCrystal.h>
. Quando includi una libreria in un programma, tutto il codice nella libreria viene caricato su Arduino insieme al codice per il tuo programma.
Ora siamo pronti per entrare nella programmazione! Andrò oltre le cose più interessanti che si possono fare in un momento, ma per ora lascia solo eseguire un semplice programma di test. Questo programma stamperà ” ciao, mondo!,”allo schermo. Inserisci questo codice nell’IDE di Arduino e il caricamento del consiglio:
#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { lcd.begin(16, 2); lcd.print("hello, world!");}void loop() {}
il Vostro schermo LCD dovrebbe assomigliare a questa:
Display LCD Opzioni
Ci sono 19 le diverse funzioni della libreria LiquidCrystal disponibile per noi da usare. Queste funzioni fanno cose come cambiare la posizione del testo, spostare il testo sullo schermo, o rendere il display accendere o spegnere. Quello che segue è una breve descrizione di ogni funzione, e come usarlo in un programma.,
LiquidCrystal()
La funzioneLiquidCrystal()
imposta i pin che Arduino utilizza per connettersi al display LCD. È possibile utilizzare uno qualsiasi dei pin digitali di Arduino per controllare il display LCD. Basta inserire i numeri pin Arduino all’interno delle parentesi in questo ordine:
LiquidCrystal(RS, E, D4, D5, D6, D7)
RS, E, D4, D5, D6, D7 sono i pin LCD.
Per esempio, dire che si desidera LCD pin D7 per la connessione a Arduino pin 12., Basta mettere”12″al posto di D7 nella funzione in questo modo:
LiquidCrystal(RS, E, D4, D5, D6, 12)
Questa funzione deve essere posizionata prima della sezione void setup()
del programma.
lcd.begin()
Questa funzione imposta le dimensioni del display LCD. Deve essere posizionato prima di qualsiasi altra funzione LiquidCrystal nella sezionevoid setup()
del programma. Il numero di righe e colonne è specificato come lcd.begin(columns, rows)
., Per un 16×2 LCD, si dovrebbe usare lcd.begin(16, 2)
, e per un 20×4 LCD si dovrebbe usare lcd.begin(20, 4)
.
lcd.clear()
Questa funzione cancella qualsiasi testo o dati già visualizzati sul display LCD., Se si utilizza lcd.clear()
con lcd.print()
e delay()
funzione void loop()
sezione, si può fare una semplice testo lampeggiante programma:
lcd.home()
Questa funzione posiziona il cursore in alto a sinistra dello schermo, e le stampe di qualsiasi testo successivo da quella posizione. Ad esempio, questo codice sostituisce le prime tre lettere di ” hello world!,” con le X:
lcd.setCursor()
Simile, ma più utile di lcd.home()
è lcd.setCursor()
. Questa funzione posiziona il cursore (e qualsiasi testo stampato) in qualsiasi posizione sullo schermo. Può essere utilizzato nella sezionevoid setup()
ovoid loop()
del programma.
La posizione del cursore è definita con lcd.setCursor(column, row)
. Le coordinate della colonna e della riga partono da zero (rispettivamente 0-15 e 0-1)., Ad esempio, utilizzando lcd.setCursor(2, 1)
nella sezionevoid setup()
di ” hello, world!”programma sopra stampe” ciao, mondo!” la riga inferiore e lo sposta a destra due spazi:
lcd.write()
È possibile utilizzare questa funzione per scrivere diversi tipi di dati per il display LCD, per esempio la lettura di un sensore di temperatura, o le coordinate di un modulo GPS., Puoi anche usarlo per stampare caratteri personalizzati che crei tu stesso (più su questo sotto). Utilizzarelcd.write()
nella sezionevoid setup()
ovoid loop()
del programma.
lcd.print()
Questa funzione viene utilizzata per stampare il testo sul display LCD. Può essere utilizzato nella sezionevoid setup()
o nella sezionevoid loop()
del programma.
Per stampare i numeri, non sono necessarie virgolette. Ad esempio, per stampare 123456789, utilizzare lcd.print(123456789)
.,
lcd.print()
può stampare numeri in basi decimali, binarie, esadecimali e ottali. Ad esempio:
lcd.cursor()
Questa funzione crea un cursore visibile. Il cursore è una linea orizzontale posta sotto il carattere successivo da stampare sul display LCD.
La funzionelcd.noCursor()
spegne il cursore., lcd.cursor()
e lcd.noCursor()
può essere utilizzato insieme nel void loop()
sezione per fare un cursore lampeggiante simile a quello che si vede in molti campi di inserimento testo:
Questo pone un cursore lampeggiante dopo il punto esclamativo in “hello, world!”
I cursori possono essere posizionati ovunque sullo schermo con la funzionelcd.setCursor()
. Questo codice posiziona un cursore lampeggiante direttamente sotto il punto esclamativo in ” ciao, mondo!,”:
lcd.blink()
Questa funzione crea un cursore stile blocco che lampeggia e si spegne a circa 500 millisecondi per ciclo. Usalo nella sezionevoid loop()
. La funzione lcd.noBlink()
disabilita il cursore del blocco lampeggiante.
lcd.display()
Questa funzione attiva qualsiasi testo o cursori che sono stati stampati sullo schermo LCD. La funzionelcd.noDisplay()
disattiva qualsiasi testo o cursori stampati sul display LCD, senza cancellarlo dalla memoria del display LCD.,
Queste due funzioni possono essere utilizzate insieme nella sezione void loop()
per creare un effetto di testo lampeggiante. Questo codice farà il ” ciao, mondo!”text blink on e off:
lcd.scrollDisplayLeft()
Questa funzione prende qualsiasi cosa stampata sul display LCD e lo sposta a sinistra. Dovrebbe essere usato nella sezionevoid loop()
con un comando di ritardo che lo segue. La funzione sposta il testo di 40 spazi a sinistra prima di tornare al primo carattere. Questo codice muove il ” ciao, mondo!,”testo a sinistra, alla velocità di un secondo per carattere:
Le stringhe di testo più lunghe di 40 spazi verranno stampate sulla riga 1 dopo la 40a posizione, mentre l’inizio della stringa continuerà a stampare sulla riga 0.
lcd.scrollDisplayRight()
Questa funzione si comporta comelcd.scrollDisplayLeft()
, ma sposta il testo verso destra.
lcd.autoscroll()
Questa funzione prende una stringa di testo e la scorre da destra a sinistra in incrementi del numero di caratteri della stringa., Ad esempio, se hai una stringa di testo lunga 3 caratteri, sposterà il testo di 3 spazi a sinistra ad ogni passaggio:
Come le funzioni lcd.scrollDisplay()
, il testo può essere lungo fino a 40 caratteri prima di ripetere. A prima vista, questa funzione sembra meno utile delle funzionilcd.scrollDisplay()
, ma può essere molto utile per creare animazioni con caratteri personalizzati.
lcd.noAutoscroll()
lcd.noAutoscroll()
disattiva la funzione lcd.autoscroll()
., Utilizzare questa funzione prima o dopolcd.autoscroll()
nella sezionevoid loop()
per creare sequenze di testo a scorrimento o animazioni.
lcd.rightToLeft()
Questa funzione imposta la direzione in cui il testo viene stampato sullo schermo. La modalità predefinita è da sinistra a destra usando il comando lcd.leftToRight()
, ma potresti trovare alcuni casi in cui è utile emettere il testo nella direzione inversa:
Questo codice stampa il ” ciao, mondo!”testo come”!dlrow ,oleh”., A meno che non si specifichi il posizionamento del cursore con lcd.setCursor()
, il testo verrà stampato dalla posizione (0, 1) e solo il primo carattere della stringa sarà visibile.
lcd.createChar()
Questo comando permette di creare personaggi personalizzati. Ogni carattere di un LCD 16×2 ha una larghezza di 5 pixel e un’altezza di 8 pixel. Fino a 8 diversi caratteri personalizzati possono essere definiti in un unico programma., Per progettare i tuoi personaggi, dovrai creare una matrice binaria del tuo personaggio personalizzato da un generatore di caratteri LCD o mapparlo tu stesso. Questo codice crea un simbolo di grado (°):
Ci sono un sacco di cose interessanti che puoi fare accadere con questi LCD 16×2! Prova a combinare alcune di queste funzioni e guarda cosa succede.
Ecco una versione video di questo tutorial in modo da poter vedere ciò che ogni funzione fa sul display LCD in tempo reale: