Paso 4: Configuración de la física debouncer
configurar botón
int buttonInt = 0; el pin 2 es de interrupción 0
attachInterrupt (buttonInt, incrementProgram, RISING);
Esa línea de código significa que queremos el pin indicado por buttonInt (pin digital 2) para funcionar como una interrupción. Queremos llamar a la función incrementProgram, whenver experimenta un flanco ascendente. Un flanco ascendente significa simplemente un lugar donde la tensión Salta muy pronto (por ejemplo, cuando un botón termina una conexión a 5 voltios)
Vamos a utilizar la función incrementProgram (mostrada abajo) para cambiar el programa actual que se está ejecutando el Arduino.
void incrementProgram() {}
Serial.Print("pressed!");
Si (currentProgram == (NUMBER_OF_PROGRAMS - 1)) {}
currentProgram = 0;
}
Else {}
currentProgram = currentProgram + 1;
}
}
¿Recuerda estas líneas?
#define NUMBER_OF_PROGRAMS 6
para cambiar entre programas
volátiles int currentProgram = 0;
¿Hacen un poco más sentido ahora? la razón que hay que añadir la palabra clave volátil al programa actual es porque queremos saber el arduino que este número se cambiará regularmente y que esto es una cosa normal que no debe flipar sobre.
El problema con esto es que cuando es presionado un botón, realmente devuelto arriba una abajo un poco (muy rápidamente) antes colocaba en su valor final. Para eliminar mucho de esto rebotar y suavizar la transición que vamos a usar un circuito RC como un filtro de paso bajo que va en gran parte a las muy rápidas "rebotes". La constante de tiempo de este particular circuito RC es de 10 ms, que es generalmente más lento que un humano puede presionar un botón, y entonces esas señales deberían ser inafectadas.
Puesto que son invertir más desencadenantes de Schmidt, la mitad izquierda del diagrama de circuito de muestra un botón que realmente pasará de 5 voltios a 0 voltios cuando se presiona. Sin embargo, tenemos esta interrupción en un pin digital y la naturaleza exacta de la rebotando en impredecible. Para solucionar este problema que vamos a utilizar un disparador Schmidt como un convertidor de analógico a Digital básico, tomando nuestro lento movimiento cambio de alto a bajo en un salto desde baja a alta, enviando un flanco ascendente, que debe desencadenar nuestra interrupción.
El esquema utiliza un disparador Schmidt muy particular, y suya puede ser diferente. Revise la hoja de datos para ver exactamente cómo debería funcionar, pero la puesta en marcha se muestra es muy común.
Vout debe ser conectado al pin digital 2.