Hola:
He probrado a usar un sensor capacitivo, de la manera que se muestra:
Todo muy bien usando la libreria <CapacitiveSensor.h>.
El problema me aparece si trasteo con el pulsador capacitovo y con mas cosas al mismo tiempo.
En este caso uso un selector multiple (una rueda con muchas posiciones). Que tiene un comun y cuatro salidas.
Pues usando este selector multiple el sensor capacitovo/led se dispara cuando le da la gana,se vuelve loco (ni ajustanto la sensibilidad). Desconfio que hay que ponerle algo mas que una simple resistencia.
Alguna idea.
Pego aqui el codigo por si interesa
#include <CapacitiveSensor.h>
CapacitiveSensor misensor = CapacitiveSensor(2,5);
//pulsador y led
unsigned int rango=5000; //sensibilidad pulsador capacitivo
int estadoPulsador=0;
int estadoAnteriorPulsador=0;
int cont=0;
int led1=8;
//selector multiple
int selec1=52;
int selec2=50;
int selec3=48;
int selec4=46;
int selectcomun=44;
int val1, val2, val3, val4;
int var;
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
//pulsador tactil
misensor.set_CS_AutocaL_Millis(0xFFFFFFFF);
//selector multiple
pinMode(selec1, INPUT);
pinMode(selec2, INPUT);
pinMode(selec3, INPUT);
pinMode(selec4, INPUT);
pinMode(selectcomun, OUTPUT);
digitalWrite (selectcomun,HIGH);
}
void loop() {
//parte pulsadores
unsigned long valor = misensor.capacitiveSensor(30);
if (valor > rango){
estadoPulsador++; //metemos codigo para solo detectar flanco de subida
if (estadoPulsador == 1 & estadoAnteriorPulsador == 0){
cont++;
estadoPulsador = estadoAnteriorPulsador;
}
delay (100);
}
if (cont==2){
cont=0;
digitalWrite (led1,LOW);
}
switch(cont){
case 1:
digitalWrite (led1,HIGH);
break;
}
//parte selector programa
digitalWrite (selectcomun,HIGH);
val1=digitalRead(selec1);
val2=digitalRead(selec2);
val3=digitalRead(selec3);
val4=digitalRead(selec4);
Serial.println (var);
if ((val1==HIGH)&(val2==HIGH)&(val3==HIGH)&(val4==HIGH)){ //1111
var=1;
}
if ((val1==HIGH)&(val2==HIGH)&(val3==HIGH)&(val4==LOW)){ //1110
var=2;
}
if ((val1==HIGH)&(val2==HIGH)&(val3==LOW)&(val4==LOW)){ //1100
var=3;
}
if ((val1==HIGH)&(val2==LOW)&(val3==LOW)&(val4==LOW)){ //1000
var=4;
}
if ((val1==LOW)&(val2==LOW)&(val3==LOW)&(val4==LOW)){ //0000
var=5;
}
if ((val1==LOW)&(val2==HIGH)&(val3==LOW)&(val4==LOW)){ //0100
var=6;
}
if ((val1==LOW)&(val2==HIGH)&(val3==LOW)&(val4==HIGH)){ //0101
var=7;
}
if ((val1==LOW)&(val2==HIGH)&(val3==HIGH)&(val4==HIGH)){ //0111
var=8;
}
if ((val1==LOW)&(val2==LOW)&(val3==HIGH)&(val4==HIGH)){ //0011
var=9;
}
if ((val1==LOW)&(val2==LOW)&(val3==LOW)&(val4==HIGH)){ //0001
var=10;
}
if ((val1==LOW)&(val2==LOW)&(val3==HIGH)&(val4==LOW)){ //0010
var=11;
}
if ((val1==HIGH)&(val2==LOW)&(val3==HIGH)&(val4==HIGH)){ //1011
var=12;
}
if ((val1==HIGH)&(val2==HIGH)&(val3==LOW)&(val4==HIGH)){ //1101
var=13;
}
if ((val1==LOW)&(val2==HIGH)&(val3==HIGH)&(val4==LOW)){ //0110
var=14;
}
if ((val1==HIGH)&(val2==LOW)&(val3==HIGH)&(val4==LOW)){ //1010
var=15;
}
if ((val1==HIGH)&(val2==LOW)&(val3==LOW)&(val4==HIGH)){ //
var=16;
}
}
Muchas gracias