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
Hotboards_buttons.cpp
00001 /* 00002 Hotboards_buttons.h - Driver to control buttons (with hardware debounce) 00003 this driver considered external pull-ups (or pull-downs) are in use 00004 Hotboards buttons board (http://hotboards.org) 00005 Created by Diego Perez, January 16, 2016. 00006 Released into the public domain. 00007 */ 00008 #include "Hotboards_buttons.h" 00009 00010 Hotboards_buttons::Hotboards_buttons( PinName pin, bool active ) : 00011 _pin( pin ) 00012 { 00013 _lastButtonState = 0; 00014 _pressed = active; 00015 _isPressed = 0; 00016 _isReleased = 0; 00017 } 00018 00019 bool Hotboards_buttons::isPressed( void ) 00020 { 00021 bool isPressed; 00022 poll( ); 00023 isPressed = _isPressed; 00024 _isPressed = 0; 00025 return isPressed; 00026 } 00027 00028 bool Hotboards_buttons::isReleased( void ) 00029 { 00030 bool isReleased; 00031 poll( ); 00032 isReleased = _isReleased; 00033 _isReleased = 0; 00034 return isReleased; 00035 } 00036 00037 bool Hotboards_buttons::status( void ) 00038 { 00039 if( _pin == _pressed ) return 1; 00040 else return 0; 00041 } 00042 00043 void Hotboards_buttons::poll( void ) 00044 { 00045 bool buttonState; 00046 // leemos el boton de la tarjeta 00047 buttonState = status( ); 00048 00049 // comparemos el estado actual con la anterior lectura 00050 if( buttonState != _lastButtonState ) 00051 { 00052 // si el estado cambio esque recien se presiono 00053 if( buttonState ) 00054 { 00055 // regresamos un uno si el boton cambio a presionado 00056 _isPressed = 1; 00057 } 00058 else 00059 { 00060 // si no es que fue soltado 00061 _isReleased = 1; 00062 } 00063 } 00064 // respaldamos el esatdo actual para compararlo la sigentoie 00065 // vez que preguntemos 00066 _lastButtonState = buttonState; 00067 }
Generated on Mon Jul 18 2022 03:54:34 by
