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.


Il blog mauroalfieri.it ed i suoi contenuti sono distribuiti con Licenza
1 ping
[…] « Grove i2c touch […]