Il Grove I2C touch lcd agiunge un LCD al progetto con il solo touch sensor per consentirti di visualilzzare su un display il tasto sfiorato.
Se hai letto i precedenti articoli dedicati alla serie Grove sai che sono molto semplici da collegare e non necessitano di saldatura grazie ai cavetti predisposti.
In particolare nell’articol Grove I2C touch hai imparato a riconoscere il valore del sensore che è stato sfiorato.
In questo articolo dedicato al Grove I2C touch lcd vedrai il valore del pulsante sul display.
Grove I2C touch lcd collegamenti
come in passato i collegamenti sono molto semplici ed in questo caso ti occorrono:
n.1 grove shield;
n.1 display grove i2c rgb
n.1 touch sensor board i2c
n.2 cavetti a 4 poli
assemblare il tutto è semplice, ti è sufficiente collegare il touch sensor i2c i uno degli ingressi i2c della grove shield:
e il display in un altro dei connettori i2c.
Lo sketch
Lo sketch è un mix tra quello che hai letto per il controllo dell’LCD i2c e quello usato per la lettura dei sensori touch:
#include <Wire.h> // include I2C library #include <i2c_touch_sensor.h> #include <MPR121.h> #include "rgb_lcd.h" rgb_lcd lcd; const int colorR = 255; const int colorG = 210; const int colorB = 0; i2ctouchsensor touchsensor; // keep track of 4 pads' states long previousMillis = 0; long interval = 100; void setup() { Serial.begin(9600); // for debugging Serial.print("begin to init"); Wire.begin(); // needed by the GroveMultiTouch lib touchsensor.initialize(); lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); lcd.print("Touch Sensors"); } void loop() { unsigned long currentMillis = millis(); lcd.setCursor(0, 1); lcd.print("Press:"); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; touchsensor.getTouchState(); } for (int i=0;i<12;i++) { if (touchsensor.touched&(1<<i)) { Serial.print("pin "); Serial.print(i); Serial.println(" was touched"); switch(i) { case 8: lcd.setCursor(7, 1); lcd.print("8"); break; case 9: lcd.setCursor(9, 1); lcd.print("9"); break; case 10: lcd.setCursor(11, 1); lcd.print("10"); break; case 11: lcd.setCursor(14, 1); lcd.print("11"); break; } } } }
le prime linee 01-04: includono le librerie necessarie per la comunicazione i2c ( Wire.h ) la lettura del sensore touch ( i2c_touch_sensor.h e MPR121.h ) ed il controllo del display LCD ( rgb_lcd.h );
linea 06: crea l’istanza “lcd” dell’oggetto rgb_lcd;
linee 08-10: imposta le 3 costanti per il colore RGBb di sfondo da applicare al display;
linea 12: crea l’instanza “touchsensor” dell’oggetto i2ctouchsensor;
linee 14-15: imposta le due variabili usate per il conteggio del tempo trascorso;
linee 16-26: la funzione di setup() è semplice e si limita ad attivare la connessione seriale a 9600 baud, la comunicazione i2c, il sensore touch e impostare il display come 16 colonne, 2 righe dallo sfondo impostato alle liee 08-10 e sulla prima linea scrive “Touch Sensors”;
linea 29: assegna alla variabile currentMillis il valore corrente restituito dalla funzione millis();
linee 31-32: posizionati sulla seconda riga primo carattere e scrivi “Press:”;
linee 34-37: ogni 100 millisecondi, intervallo definito alla linea 15, riassegni il valore di currentMillis a previousMillis e richiami il metodo getTouchState() per interrogare il grove I2C touch lcd sensor;
linea 39: imposti il solito ciclo da 0 a 11 per recuperare le informazioni del sensore touch;
linea 40: quando il sensore corrispondete all’indice i è statao sfiorato il metodo touched restituisce true e lo sketch continua nelle linee 41-65;
linee 41-43: scrivi sul monitor seriale quale pulsante è stato toccato dall’utente;
linea 44: imposta uo switch sul valore di “i”;
linea 45: se il valore di “i” è 8 esegue le linee 46-47;
linea 46: posizionati sulla posizione 7 della seconda riga;
linea 47: scrivi il valore “8”;
linee 50-63: esegui i medesimi passaggi delle linee 45-47 per tutti gli altri valori restituiti dai touch sesor.
Il video demo del Grove I2C touch lcd
Ho ripreso alcuni secondi durante il mio primo test con il grove I2C touch lcd.
2 commenti
che è successo al video? dice non disponibile
Autore
Ciao Mrshark,
hai ragione, avevo erroneamente dimenticato di rendere pubblico il video.
Grazie per la segnalazione.