Driver to control buttons (with hardware debounce). This driver considered external pull-ups (or pull-downs) are in use
Dependents: buttons is_released is_pressed button_status ... more
Diff: Hotboards_buttons.cpp
- Revision:
- 0:810519ce94bf
diff -r 000000000000 -r 810519ce94bf Hotboards_buttons.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Hotboards_buttons.cpp Mon Feb 29 02:30:13 2016 +0000
@@ -0,0 +1,67 @@
+/*
+ Hotboards_buttons.h - Driver to control buttons (with hardware debounce)
+ this driver considered external pull-ups (or pull-downs) are in use
+ Hotboards buttons board (http://hotboards.org)
+ Created by Diego Perez, January 16, 2016.
+ Released into the public domain.
+*/
+#include "Hotboards_buttons.h"
+
+Hotboards_buttons::Hotboards_buttons( PinName pin, bool active ) :
+ _pin( pin )
+{
+ _lastButtonState = 0;
+ _pressed = active;
+ _isPressed = 0;
+ _isReleased = 0;
+}
+
+bool Hotboards_buttons::isPressed( void )
+{
+ bool isPressed;
+ poll( );
+ isPressed = _isPressed;
+ _isPressed = 0;
+ return isPressed;
+}
+
+bool Hotboards_buttons::isReleased( void )
+{
+ bool isReleased;
+ poll( );
+ isReleased = _isReleased;
+ _isReleased = 0;
+ return isReleased;
+}
+
+bool Hotboards_buttons::status( void )
+{
+ if( _pin == _pressed ) return 1;
+ else return 0;
+}
+
+void Hotboards_buttons::poll( void )
+{
+ bool buttonState;
+ // leemos el boton de la tarjeta
+ buttonState = status( );
+
+ // comparemos el estado actual con la anterior lectura
+ if( buttonState != _lastButtonState )
+ {
+ // si el estado cambio esque recien se presiono
+ if( buttonState )
+ {
+ // regresamos un uno si el boton cambio a presionado
+ _isPressed = 1;
+ }
+ else
+ {
+ // si no es que fue soltado
+ _isReleased = 1;
+ }
+ }
+ // respaldamos el esatdo actual para compararlo la sigentoie
+ // vez que preguntemos
+ _lastButtonState = buttonState;
+}
Hotboards Buttons