Sensor capacitivo, funcionamiento erratico

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

No tengo experiencia con estos sensores, pero prueba imprimiendo el valor por serial a ver por que valores se mueve

Hola Popeye, la mejor manera de quemar tu Arduino es conectar el LED directamente sin limitador de corriente como tu lo haces. Por favor pon una resistencia de 330 ohms en serie con el LED.

Luego hablas de un selector múltiple de un común y cuatro salidas (imagino te refieres a un DIP SWICH) no quiero ni imaginar que ingeniosa conexión usaste... por favor pon una resistencia de 10K a GND en cada pata del selector (46, 48, 50 y 52).

Luego veo un error en las condiciones IF() para unir varias condiciones se AND (&&) por que & se usa como operador bit a bit.

if ((val1==HIGH) && (val2==HIGH) && (val3==HIGH) && (val4==HIGH)){ //1111
      var=1; 
}

Que en realidad es lo mismo que:

if (val1 && val2 && val3 && val4)){ //1111
      var=1; 
}
if (val1 && val2 && val3 && !val4)){ //1110
      var=2;
}

Kike_GL:
Hola Popeye, la mejor manera de quemar tu Arduino es conectar el LED directamente sin limitador de corriente como tu lo haces. Por favor pon una resistencia de 330 ohms en serie con el LED.

Luego hablas de un selector múltiple de un común y cuatro salidas (imagino te refieres a un DIP SWICH) no quiero ni imaginar que ingeniosa conexión usaste... por favor pon una resistencia de 10K a GND en cada pata del selector (46, 48, 50 y 52).

Hola, muchas gracias por responder.
Siento no poner la resistencia en el dibujo de arriba, pero si que puse la correspodiente resitencia al Led
De igual manera lo hice en el GND de DIP SWICH (Puse una de 1K).

Al final opte por comprar unos pulsadores capacitivos y se los conectare directamente al pulsador en si, ya os contare.

Muchas gracias por responder