Hola amigos, tengo un problema con un código que no me lee bien unos interruptores.
El código es el siguiente:
void leer_seleccion(){
bool codigo1=digitalRead(codigo_1);
bool codigo2=digitalRead(codigo_2);
bool codigo3=digitalRead(codigo_3);
bool codigo4=digitalRead(codigo_4);
if (codigo1 == 1 | codigo2 == 1 | codigo3 == 1 | codigo4 == 1){
delay(1000);
}
valor_seleccion = 0;
codigo1=0;
codigo2=0;
codigo3=0;
codigo4=0;
codigo1=digitalRead(codigo_1);
codigo2=digitalRead(codigo_2);
codigo3=digitalRead(codigo_3);
codigo4=digitalRead(codigo_4);
valor_seleccion = (codigo1*1) + (codigo2*2) + (codigo3*4) + (codigo4*
;
}
La función es que se leer el estado de 4 interruptores, si alguno se encuentra cerrado se espera 1 segundo y se realiza una nueva lectura.
Bien cuando se cierran los interruptores después del segundo siempre la lectura es correcta, pero si se abre alguno de ellos, después de estar cerrado en la segunda lectura salen numero aleatorios, pero siempre el mismo dependiendo de que interruptor se abra.
Me podríais ayudar diciendo que pasa.
la lectura se realiza en un LCD y esta siempre es correcta salvo al abrir los interruptores.
¿Creéis que puede ser un efecto e rebotes? ¿Con un segundo despues en la segunda lectura nos¡ se deberia de haber evitado?
Gracias de antemano