Aggiornato il 08.04.2014
Come promesso andrò a spiegarvi, in 6 puntate, come ho realizzato un semplice esempio di domotica con degli esempi di utilizzo dei diversi dispositivi/sensori collegati. Oggi vi descriverò come utilizzare un display 16x2.Lo schema da me utilizzato è quello rappresentato nell'immagine.
Il potenziometro serve esclusivamente per controllare il contrasto, se realizzate un partitore di tensione al PIN 15 del display (il PIN subito a destra del collegamento a D7) potrete regolarne anche la retroilluminazione. La tensione da applicare è 4.2V, io ho collegato direttamente i 5V di Arduino senza alcun problema.
Una volta realizzato i collegamenti e creato un nuovo sketch con l'IDE di Arduino dovete, nell'area iniziale destinata alla dichiarazione delle variabili, includere la libreria specifica per l'utilizzo del nostro display 16x2
#include <LiquidCrystal.h>
ed inizializzarla con il seguente comando
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Ora all'interno della procedura di setup, void setup(), impostate il numero di colonne e righe
lcd.begin(16, 2);
Nella procedura di esecuzione continua, void loop(), possiamo far appare i testi che vogliamo.
Con il comando lcd.setCursor(0, 1); determiniamo da che punto vogliamo iniziare a scrivere, in questo caso dalla prima colonna (lcd.setCursor(0, 1);) e seconda riga (lcd.setCursor(0, 1);).
Le colonne vanno, in questo caso, da 0 a 15 mentre le righe da 0 a 1.
Se impostiamo solo la partenza tutto ciò che verrà stampato su quella determinata riga verrà automaticamente aggiunto fino al raggiungimento dei 16 caratteri a disposizione. Se vogliamo formattare la riga possiamo farlo semplicemente stampando una stringa di 16 caratteri e con il comando lcd.setCursor(colonna, riga); determinare la posizione nella quale vogliamo che i nostri valori o caratteri appaiano stanno attenti a non sovrascrivere quelli precedentemente formattati.
Il comando da utilizzare per visualizzare i testi sul LCD è lcd.print("Testo");
Di seguito un esempio:
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 0 is the first row, since counting begins with 0):
lcd.setCursor(0, 0);
// print the number of seconds since reset:
// Print a message to the LCD.
lcd.print("Arduino 29.03.14");
// (note: line 0 is the second row, since counting begins with 1:
lcd.setCursor(0, 1);
// Print a message to the LCD.
lcd.print("happy birthday !");
}
Nel caso usiate LCD Keypad Shield i PIN utilizzati sono i seguenti:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Ciao Marco, propongo di sostituire la terzultima riga lcd.setCursor(1, 0); con lcd.setCursor(1, 1);
RispondiEliminaAltrimenti le scritte si sovrappongono sulla medesima riga.
Grazie Nick. Corretto, grazie della segnalazione.
RispondiElimina