Assemblare un circuito con più sensori capacitivi con Arduino
Nella precedente lezione hai visto come creare un sensore capacitivo con Arduino. I dispositivi tattili interattivi Hi-Storia sono caratterizzati dalla presenza di diversi sensori sulla superficie delle stampe 3D. In questa lezione lavorerai per creare un circuito con più di un sensore capacitivo.
Si parte dall’assemblaggio di un secondo sensore. Per ottimizzare i PIN utilizzati, puoi usare il PIN 13 come trasmettitore per entrambi i sensori, poiché il segnale trasmesso è condiviso tra tutti i PIN e non subisce variazioni con l’interpolazione dell’utente che tocca il sensore.
Collega il secondo PIN ricevitore al PIN digitale 7 e assembla come da figura:
Ora si passa allo script. Riprendi il codice già sviluppato nella scorsa lezione:
#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(13, 2);
int threshold = 500;
void setup() {
Serial.begin(9600);
}
void loop() {
// memorizza in una variable il valore riportato dal sensore
long sensorValue = capSensor.capacitiveSensor(30);
// verifico se il valore del sensore capacitivo ha superato la soglia,
// cioè se è stato toccato
if(sensorValue > threshold){
//associamo a questo sensore l'ID 1
Serial.println(1);
}
delay(50);
}
Intuirai che il primo passo è inizializzare un secondo sensore CapacitiveSensor:
CapacitiveSensor capSensor2 = CapacitiveSensor(13, 7);
Nel loop elabora il valore capacitiveSensor del secondo sensore e memorizzalo in una seconda variabile
long sensorValue2 = capSensor2.capacitiveSensor(30);
Infine, farai un secondo controllo per verificare se sensorValue2 supera il valore di soglia. Se lo supera, Arduino stamperà via Seriale l’ID relativo a questo sensore, che imposterai come 2.
Complessivamente, lo script apparirà come segue:
#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(13, 2);
CapacitiveSensor capSensor2 = CapacitiveSensor(13, 7);
int threshold = 500;
void setup() {
Serial.begin(9600);
}
void loop() {
// memorizza in una variable il valore riportato dal sensore
long sensorValue = capSensor.capacitiveSensor(30);
long sensorValue2 = capSensor2.capacitiveSensor(30);
// verifico se il valore di output del sensore capacitivo ha superato la soglia massima, cioè se è stato toccato
if(sensorValue > threshold){
//associamo a questo sensore l'ID 1
Serial.println(1);
}
if(sensorValue2 > threshold){
//associamo a questo sensore l'ID 1
Serial.println(2);
}
delay(50);
}
Con questo script, toccando il primo sensore (corrispondente dal PIN digital 2) viene stampato il carattere 1; toccando il secondo sensore (PIn digital 7) viene stampato il carattere 2.
Puoi scaricare questo codice completo in formato .ino per IDE Arduino o Eclipse.
Risulta difficile avere un dispositivo con due soli attivatori. I dispositivi che fino ad ora abbiamo realizzato con gli hi-Storia labs hanno da 4 a 9 sensori tattili. Lavora sul numero di sensori che hai previsto per il tuo dispositivo, replicando di volta in volta l’inizializzazione dei sensori, dell’elaborazione dei valori e del controllo della soglia.
Realizzerai uno script pienamente funzionante ma, dal punto di vista informatico, poco elegante, poiché ripetiamo ogni volta blocchi di codice identici per ogni sensore, con spreco di linee di codice e poca mantenibilità, perché ogni modifica ad un sensore (ad esempio inserire un LED in risposta al superamento di una soglia) va ripetuta per ogni blocco.
Nella successiva lezione trasformerai il codice attuale in una versione iterativa e snella.