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.h
- Committer:
- Hotboards
- Date:
- 2016-02-29
- Revision:
- 0:810519ce94bf
File content as of revision 0:810519ce94bf:
/* 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. */ #ifndef Hotboards_buttons_h #define Hotboards_buttons_h #include "mbed.h" /** Hotboards_buttons class. * Used to read mechanical buttons * * Example: * @code * #include "Hotboards_buttons.h" * * Hotboards_buttons btn( 5 ); * * int main( void ) * { * for(;;){ * if( btn.isPressed( ) ) * // do something * } * } * @endcode */ class Hotboards_buttons { public : /** Create Hotboards_buttons instance * @param pin pin where the button will be read it * @param active logic level that gives you when the button is pressed * * Example: * @code * // instance one button on pin 5 (with pull-ups) * Hotboards_buttons btn( 5 ); * // instance one button on pin 6 (with pull-downs) * Hotboards_buttons btn( 6, 1 ); * @endcode */ Hotboards_buttons( PinName pin, bool active=0 ); /** Tells you if a button has been pressed (only once) * @return '1' if the buttons has been pressed * * Example: * @code * // instance one button on pin 5 * Hotboards_buttons btn( 5 ); * if( btn.isPressed( ) ) * // do something * @endcode */ bool isPressed( void ); /** Tells you if a button has been Released (only once) * @return '1' if the buttons has been Released * * Example: * @code * // instance one button on pin 5 * Hotboards_buttons btn( 5 ); * if( btn.isReleased( ) ) * // do something * @endcode */ bool isReleased( void ); /** Tells you the button state * @return '1' if the buttons is pressed * * Example: * @code * // instance one button on pin 5 * Hotboards_buttons btn( 5 ); * if( btn.istatus( ) ) * // button pressed * else * // button not pressed * @endcode */ bool status( void ); private : void poll( void ); DigitalIn _pin; bool _pressed; bool _lastButtonState; bool _isPressed; bool _isReleased; }; #endif