sabato 29 marzo 2014

Parte 1/6: Utilizzare un LCD 16x2 con Arduino

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);

2 commenti:

  1. Ciao Marco, propongo di sostituire la terzultima riga lcd.setCursor(1, 0); con lcd.setCursor(1, 1);
    Altrimenti le scritte si sovrappongono sulla medesima riga.




    RispondiElimina
  2. Grazie Nick. Corretto, grazie della segnalazione.

    RispondiElimina