LCD03 – Integrare un display a cristalli liquidi LCD e un Keypad su Arduino tramite I2C

Introduzione

In un precedente articolo (vedi qui) abbiamo già visto come integrare un display a cristalli liquidi generico LCD1602 nei nostri progetti con Arduino. In questo articolo vedremo come fare la stessa cosa con LCD03 un altro modulo a cristalli liquidi. In questo caso utilizzeremo un’altra libreria Arduino, specifica solo per questo modello. Vedremo inoltre che la potenza di questo modulo sta soprattutto nella possibilità di integrare direttamente un keypad (una piccola tastiera numerica). Questa opzione amplia molto le opportunità di progetto realizzabili su Arduino.

Il dislay a cristalli liquidi – LCD1603

Questo modulo a cristalli liquidi esiste in due diverse versioni, la 20×4 caratteri e la 16×2 caratteri. Entrambe hanno schermo retroilliminato o blu o verde.

Questo modulo ha già integrato al suo interno la scheda che gestisce la comunicazione I2C. Questa avviene attraverso l’indirizzo di default 0XC6.

Come possiamo vedere dalla figura abbiamo i 4 pin laterali. Due per l’alimentazione VCC e GND, e due per la comunicazione I2C. 7

Inoltre sono presenti anche due pin per inserire un jumper (Jumper mode). Se il jumper non è presente la comunicazione sarà tramite I2C, se invece è presente la comunicazione sarà seriale.

Inoltre una cosa molto interessante di questa scheda è la possibilità di gestire un keypad direttamente da LCD. Infatti sono presenti i 7 pin predisposti per la connessione ad un keypad.

Le connessioni sono state fatte appositamente per una perfetta integrazione su un bus da 7 canali che va direttamente dalla scheda al keypad.

Se siete interessati a maggiori informazioni tecniche al riguardo, vi consiglio di andare a vedere su questa pagina.

I keypad sono componenti davvero poco costosi, e ne esiste persino uno a membrana impermeabile.

SODIAL (R) New 4 x3 12 Matrice Tasto tastiera Interruttore matrice membrana tastiera per Arduino

SODIAL (R) New 4 x3 12 Matrice Tasto tastiera

Costruiamo il circuito

Prima di cominciare a programmare il tutto dobbiamo realizzare tutte le connessioni. Per prima cosa pensiamo alle connessioni tra Arduino e la scheda LCD03

Arduino UNO/ZEROLCD03
GNDGND
5VVCC
A4SDA
A5SCL

Poi colleghiamo un keypad alla scheda LCD03 seguendo lo schema nella figura

La libreria Arduino LCD03

Per poter utilizzare la scheda LCD03 con Arduino, è stata realizzata una libreria apposita, chiamata appunto LCD03. La potete scaricare direttamente da qui arduino-lcd03-1.0 , altrimenti potete andare su GitHub e scaricarvi il codice sorgente

$ cd ~/Documents/Arduino/libraries
$ git clone git://github.com/andatche/arduino-lcd03.git LCD03

oppure documentarvi nel sito ufficiale dello sviluppatore andatche.

Scaricate la libreria, un file zip. Integrate la libreria direttamente su Arduino IDE, selezionando la voce del menu Sketch > #Include libreria > Aggiungi libreria da file ZIP.

Per prima cosa sviluppiamo un semplice programma Hello World. Questo semplice sketch effettuerà una connessione I2C tra Arduino e il Display LCD e poi visualizzerà del testo sulle due righe. Sulla prima riga “I’m Arduino” e sulla seconda “Hello world!”

Ecco lo sketch:

#include <LCD03.h>

LCD03 lcd;

void setup() {
 // put your setup code here, to run once:
 lcd.begin(16, 2);
 lcd.backlight();
 lcd.clear();
}

void loop() {
 // put your main code here, to run repeatedly:
 lcd.home();
 lcd.print("I'm Arduino!");
 lcd.newLine();
 lcd.print("Hello world!");
}

Se eseguite il programma vedrete accendersi LCD03 con la retroilluminazione e poi comparire la scritta “I’m Arduino” sulla prima riga e “Hello world!” sulla seconda.

Integriamo il Keypad

Adesso il secondo passaggio sarà quello di programmare Arduino, o meglio la scheda integrata LCD03 per mettersi in ascolto di eventuali pressioni di tasti. Grazie alla libreria LCD03 la gestione di questo tipo di eventi è davvero semplice.

Vediamo infatti un semplice esempio in cui premendo il tasto 1 o il tasto 2 si avrà la risposta su schermo. Questo tutorial è molto semplice ma vi apre la strada a moltissime applicazioni. Potrete sostituire il codice all’interno di ogni condizione di pressione con quello che vorrete.

Vediamo il codice

#include <LCD03.h>
LCD03 lcd;

void setup() {
 // put your setup code here, to run once:
 lcd.begin(16, 2);
 lcd.backlight();
 reset();
}

void loop() {
 // Read the current state of the keypad
 uint16_t keystate = lcd.readKeypad();

if(keystate == KEYPAD_1) {
 lcd.clear();
 lcd.home();
 lcd.print("Button1 pressed!");
 delay(1000);
 reset();
 }

if(keystate == KEYPAD_2) {
 lcd.clear();
 lcd.home();
 lcd.print("Button2 pressed!");
 delay(1000);
 reset();
 }
}

void reset(){
 lcd.clear();
 lcd.home();
 lcd.print("I'm ready!");
}

Eseguendo

Se vorrete aggiungere gli altri pulsanti queste sono le costanti:

  • KEYPAD_1
  • KEYPAD_2
  • KEYPAD_3
  • KEYPAD_4
  • KEYPAD_5
  • KEYPAD_6
  • KEYPAD_7
  • KEYPAD_8
  • KEYPAD_9
  • KEYPAD_0
  • KEYPAD_STAR
  • KEYPAD_HASH

Mentre se volete porre una condizione in cui due pulsanti sono premuti contemporaneamente. Per esempio 1 e *, aggiungete questa condizione.

if(keystate == (KEYPAD_1 | KEYPAD_STAR)) {

// inserisci il codice

}

Conclusioni

In questo articolo abbiamo visto come poter utilizzare sia un keypad che uno schermo a cristalli liquidi LCD occupando solo due pin su Arduino. Questo è molto importante dato che la disponibilità di pin è sempre necessaria per poter arricchire la possibilità di utilizzare sensori e altri componenti aggiuntivi su Arduino.]

Lascia un commento