La librería Debounce Filter implementa un filtro para eliminar el rebote en dispositivos físicos como pulsadores o encorders. La librería permite fijar un intervalo en milisegundos. Tras un cambio, se ignoran cualquier cambio posterior durante el intervalo, produciéndose el filtrado de los posibles rebotes.
La clase Debounce Filter dispone de un método AddValue, para introducir el nuevo valor de estado a filtrar. De esta forma podemos usar Debounce Filter con cualquier método de entrada, incluido GPIO, interrupciones, valores calculados, o recibidos por cualquier medio de comunicación.
La librería Debounce Filter permite añadir funciones de callback para los eventos OnRising, OnFalling y OnChanging, por lo que podemos emplear la propia clase Debounce Filter para gestionar el flujo del programa, sin tener que realizar estas tareas desde el bucle principal.
Para más información consultar la entrada “>Leer un pulsador con Arduino con interrupciones y debounce.
Manual de uso
Constructor
El filtro de Debounce Filter se instancia a través de uno de sus constructores.
DebounceFilter();
DebounceFilter(bool state);
DebounceFilter(unsigned long interval);
DebounceFilter(unsigned long interval, bool state);
Usar filtro
// Añadir un nuevo valor al filtro y devolver el valor filtrado
bool AddValue(bool newState);
// Obtener el último estado
bool GetState() const;
// Devuelve true si el ultimo estado ha sido un flanco de bajada
bool IsFalling() const;
// Devuelve true si el último estado ha sido un flanco de subida
bool IsRising() const;
// Cambiar el valor del intervalo
void SetInterval(uint16_t interval);
// Funciones callback
DebounceAction OnChange;
DebounceAction OnFalling;
DebounceAction OnRising;
Ejemplos
La librería Debounce Filter incluye los siguientes ejemplos para ilustrar su uso.
- debounceFilter: Ejemplo de filtrado y funciones de callback
Instalación
- Descargar la última versión desde GitHub
- Descomprimir el archivo
- Copiar en tu carpeta de librerías (normalmente Mis Documentos\Arduino\libraries)
- Relanzar el IDE de Arduino