Touch - mcworkshop

MC   WORKSHOP
Vai ai contenuti

Menu principale:

Touch

Projects
Touch sensor
In this first example we will form an RC type circuit. Input 8 is sending and reception 7. Touching the plate with your finger turns on the LED. Touching the plate again turns the LED off. In the tests I performed, the optimal resistance is 1 Mega Ohm. The input is also sensitive to the touch of the cable insulation.
In questo primo esempio formeremo un circuito di tipo RC. L'ingresso 8 è di invio e il 7 di ricezione. Toccando con il dito la piastra il led si accende. Toccando nuovamente la piastra il led si spegne. Nelle prove che ho effettuato la resistenza ottimale è di 1 Mega. L'ingresso è sensibile anche al tocco dell'isolamento del cavo.

Wiring diagram


Sketch I bistabile

//Capacitive sensor
//This example code is in the public domain
// aprile 2019 mc
// latch
#include <CapacitiveSensor.h>
int led = 4;
long time = 0;
int state = HIGH;
boolean yes;
boolean previous = false;
int debounce = 200;
CapacitiveSensor cs_7_8 = CapacitiveSensor(7, 8);
void setup()
{
 cs_7_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
 pinMode(led, OUTPUT);
}
void loop()
{
 long total1 = cs_7_8.capacitiveSensor(30);
 if (total1 > 70)
 {
   yes = true;
 }
 else
 {
   yes = false;
 }
 if (yes == true && previous  == false && millis() - time > debounce)
 {
   if (state == LOW)
   {
     state = HIGH;
   }
   else
     state = LOW;
   time = millis();
 }
 digitalWrite(led, state);
 previous = yes;
 delay(10);
}

Sketch II
Serial monitor

//Touch sensor - PIN 4 led, open serial monitor
//This example code is in the public domain.
//mc 2019
#include <CapacitiveSensor.h>
int x= 4;
CapacitiveSensor cs_7_8 = CapacitiveSensor(7,8);
void setup(){
cs_7_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
pinMode (4, OUTPUT);
}
void loop(){
Serial.begin (9600);
long start = millis();
long total1 = cs_7_8.capacitiveSensor(30);
Serial.println(total1);
if(total1 > 1000){
digitalWrite(x,HIGH);
}else{
digitalWrite(x,LOW);
}
delay(10);
}
Sketch III impulsivo
without CapacitiveSensor.h
Resistance 2 to 3 Mega Ohms.

//Touch sensor III
//R= 2M to 3M
//This example code is in the public domain.
//mc 2019
//impulsive
#define m 200
int inPin = A0;
float d;
int pin4 = 4; //led
int ff[m];
unsigned long t;
void setup() {
}
void loop() {                    
for(int i = 0; i < m; i++){
ff[i] = analogRead(inPin);
t += ff[i];
}    
d = t / m;
d = constrain(d, 0, 100);                       
d = map(d, 0, 100, 0, 255);
analogWrite(pin4, d);
t = 0;
}


clic to enlarge
(The tests were carried out with compatible CH340)
Conclusions: The circuits cannot be used with long electrical conductors and plates too large. Increasing or decreasing the values of resistance or the size of the plates I did not achieve greater sensitivity, but greater instability. The third circuit does not activate the output by touching the electrical conductor coating. In the two circuits the resistances used are of values between 1 and 2 Mega Ohms.
The experiments continue ... Have fun!
Conclusioni: I circuiti non possono essere usati con conduttori elettrici lunghi e piastre troppo grosse.  Aumentando o diminuendo i valori di resistenza o la dimensione delle piastre non ho ottenuto una maggiore sensibilità, ma una maggiore instabilità. Il terzo circuito non attiva l'uscita toccando il rivestimento del conduttore elettrico. Nei due circuiti le resistenze utilizzate sono di valori compresi tra 1 e 2 Mega Ohm.
Gli esperimenti continuano... Buon divertimento!
 
Copyright 2015. All rights reserved.
Torna ai contenuti | Torna al menu