Oggi vedremo come collegare un display lcd ad Arduino tramite bus I2C ed un semplice sketch base per accenderlo.
In una lezione precedente (qui la lezione), abbiamo visto come collegare un display LCD, questo però occupava molti pin di Arduino, limitando quindi il collegamento di altri dispositivi.
Tramite un collegamento I2C invece possiamo ottenere lo stesso risultato solamente 2 pin per l’alimentazione (GND e VCC), oltre a 2 pin per i comandi verso il display.
Materiale necessario
Oppure
Se siete interessati al materiale, cliccate su questo e sarete indirizzati alla pagina Amazon
Esistono in commercio display i2c, ma anche schede pcb che permettono la conversione di display o altri accessori classici in i2c.
Se siete interessati a capire il principio di funzionamento dei collegamenti i2c vi riporto il link della lezione:
Collegamenti i2c
Una volta eseguito il collegamento in base al vostro hardware, occorre iniziare a creare lo sketch, a questo scopo potrebbero essere necessarie due librerie, una per il protocollo i2c, l’altra specifica per i display i2c, ma se siete fortunati ve ne basterà soltanto una.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* HOBBYEIDEE.ALTERVISTA.ORG Display LCD con bus i2c */ #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x20,16,2); void setup() { lcd.init(); lcd.clear(); lcd.backlight(); delay(200); lcd.noBacklight(); delay(200); lcd.backlight(); lcd.setCursor( 2, 0); lcd.print("Hobby e idee"); } void loop(){ lcd.setCursor(0, 1); lcd.print("Secondi: "); lcd.setCursor(9, 1); lcd.print(millis()/1000); } |
Lo sketch è simile a quello usato per il display tradizionale, vi sono solo alcuni nuovi comandi che gestiscono l’indirizzo i2c.
1 2 3 |
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x20,16,2); |
Uso la libreria “LiquidCrystal_I2C”, in caso non bastasse potete inserire anche la libreria “Wire.h”
Successivamente inizializzo il display, creando una variabile di tipo LiquidCrystal, vi ricordo che le librerie usano comandi specifici che riconoscono solo loro, la variabile avrà al suo interno dei parametri che rappresentano: l’indirizzo dello slave (0x20), il numero di caratteri per riga ed il numero di righe.
Per conoscere l’indirizzo i2c del vostro hardware, potete usare un sketch specifico, che interroga lo slave e vi riporta il suo indirizzo.
1 2 3 4 5 6 7 8 9 10 11 12 |
void setup() { lcd.init(); lcd.clear(); lcd.backlight(); delay(200); lcd.noBacklight(); delay(200); lcd.backlight(); lcd.setCursor( 2, 0); lcd.print("Hobby e idee"); } |
Nella sezione setup, seguendo l’ordine dei comandi, inizializzo il display, con lcd.clear cancello eventuale testo presente, accendo la retroilluminazione (backlight), la spengo, un ciclo superfluo ma inserito solamente per mostrare la funzione dei due comandi.
Posiziono il cursore sulla prima riga nella 3 posizione, scrivo il nome del sito; ricordatevi che le posizioni si iniziano a contare da 0.
Il loop è identico a quello della lezione con il display tradizionale, do una veloce spiegazione, posiziono il cursore sulla seconda riga posizione 1 e scrivo “secondi”, inserisco i secondi passati.
Nella pagina sono presenti link di affiliazione su cui si ottiene una piccola quota dei ricavi, senza variazioni dei prezzi.