Estoy usando el pin analógico 5 en Arduino para detectar pulsaciones de 6 botones. En la imagen, el botón de arriba a la derecha es el número 1 y luego, de derecha a izquierda, van como 2, 3, 4, 5, 6. El programa debe imprimir 0 cuando no se presiona ninguno de los botones y si se presiona uno de ellos, debería Imprime su posición como he mencionado antes. Actualmente, el problema es que si presiono el segundo botón, algunas veces se imprimirá 2 veces (en lugar de una sola vez). Supongo que se debe al "ruido" cuando se presiona el botón y que se debe rebotar, pero no sé cómo rebotar el pin analógico.
Mi código:
int old_button = 0;
int button;
int pressed_button;
int z;
void setup () {
Serial.begin(9600);
pinMode(A5, INPUT);
}
void loop () {
z = analogRead(5);
if (z > 1021) button = 0;
else if (z > 511 && z < 514) button = 1;
else if (z > 680 && z < 684) button = 2;
else if (z > 766 && z < 770) button = 3;
else if (z > 817 && z < 822) button = 4;
else if (z > 851 && z < 856) button = 5;
else if (z > 875 && z < 880) button = 6;
else button = 0;
if (old_button == button) {
old_button = button;
pressed_button = 0;
}
else {
old_button = button;
pressed_button = button;
}
Serial.println(pressed_button);
}
Circuito (resistencias de 2200 ohmios):