Il Grove i2c touch sensors è una scheda che consente di leggere fino a 8 sensori touch della serie grove connettendoli in i2c ad arduino o genuino.
Da qualche settimana sto provando e documentando i miei esperienza con le shield ed i componenti della serie Grove:
ed in questo articolo sperimenterai con il Grove touch sensors che ho aggiunto al mio kit base acquistandolo da robotics-3d.com
Collegamenti del Grove i2c touch sensors
I collegamenti, come per tutta la serie grove, sono molto semplici, facilitati dai connettori a 4 fili della serie stessa.
ho provveduto su un lato della basetta in plexyglass a predisporre 4 quadratini di biadesivo:
a cui ho poi fissato ognuno dei touch sensor del grove i2c touch:
giusto per tenerli fermi e distanti a sufficienza perché non si creassero interferenze.
L’ultimo passaggio del collegamento è inserire il connettore a 4 fili in uno degli slot i2c della grove shield:
e passare allo sketch.
Download della libraria grove i2c touch
La libreria non è presente, al momento in cui scrivo, tra quelle che puoi scaricare direttamente con il Library Manager di Arduino e questo comporta un piccolo passaggio in più.
Collegati alla pagina GitHub della libraria (url: https://github.com/Seeed-studio/Grove_I2C_Touch_Sensor):
e clicca sul pulsante download:
dopo averla scaricata, esegui la solita procedura di installazione con il file .zip o la procedura manuale descritta in molti miei articoli.
Al termine otterrai tra gli Esempi il menu relativo al Grove I2c touch sensor:
il cui esempio, unico, e sufficiente è i2c_touch.
Lo sketch di esempio Grove I2c Touch
Ecco lo sketch di esempio:
#include <Wire.h> // include I2C library #include <i2c_touch_sensor.h> #include <MPR121.h> i2ctouchsensor touchsensor; 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(); // initialize the feelers } void loop() { unsigned char MPR_Query=0; unsigned long currentMillis = millis(); 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"); } } }
Come vedi non è molto complesso ed il suo funzionamento è scrivere sul monitor seriale il valore corrispondente al sensore touch che tocchi con il dito.
Le uniche linee che potrebbero risultarti complesse riguardano la linea 14: serve ad inizializzare il touch sensor;
linea 24: interroghi il sensore per conoscere quale touch è stato toccato;
linea 26: scorri tutti e 12 i pin del sensore;
linea 28: verifichi che per ciascun indice “i” sia restituito un valore corrispondente al touch sensor interessato.
Le altre linee servono a controllare i tempi di scansione del sensore ed a scrivere sul monitor seriale i valori letti.
1 ping
[…] « Grove i2c touch […]