button procedure library

Dependents:   MIDI_CW Gemphet8

Committer:
ChuckTimber
Date:
Tue Aug 12 02:51:42 2014 +0000
Revision:
6:b6a97933b3d5
Parent:
3:1c47d318e457
Modified document.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ChuckTimber 6:b6a97933b3d5 1 /**
ChuckTimber 6:b6a97933b3d5 2 * @file button.h
ChuckTimber 6:b6a97933b3d5 3 * Project button handling Library
ChuckTimber 6:b6a97933b3d5 4 * @brief button handling library for mbed
ChuckTimber 6:b6a97933b3d5 5 * @version 1.03
ChuckTimber 6:b6a97933b3d5 6 * @author Chuck Timber
ChuckTimber 6:b6a97933b3d5 7 * @date 12/08/2014
ChuckTimber 6:b6a97933b3d5 8 */
ChuckTimber 6:b6a97933b3d5 9
ChuckTimber 0:f57033bb0e05 10 #ifndef MBED_BUTTON_H
ChuckTimber 0:f57033bb0e05 11 #define MBED_BUTTON_H
ChuckTimber 0:f57033bb0e05 12
ChuckTimber 0:f57033bb0e05 13 #include "mbed.h"
ChuckTimber 0:f57033bb0e05 14
ChuckTimber 6:b6a97933b3d5 15 /** @defines
ChuckTimber 3:1c47d318e457 16 */
ChuckTimber 6:b6a97933b3d5 17 #define BTN_SAMPLING_PERIOD 0.01
ChuckTimber 3:1c47d318e457 18
ChuckTimber 6:b6a97933b3d5 19 namespace mbed
ChuckTimber 6:b6a97933b3d5 20 {
ChuckTimber 6:b6a97933b3d5 21
ChuckTimber 6:b6a97933b3d5 22 /** Class: BTN
ChuckTimber 6:b6a97933b3d5 23 * A class handles button input procedure, which uses DigitalIn and Ticker
ChuckTimber 1:20c8438edaee 24 *
ChuckTimber 1:20c8438edaee 25 * Refered to: http://elm-chan.org/docs/tec/te03.html
ChuckTimber 0:f57033bb0e05 26 *
ChuckTimber 0:f57033bb0e05 27 * Example:
ChuckTimber 0:f57033bb0e05 28 * @code
ChuckTimber 1:20c8438edaee 29 * // Button sample
ChuckTimber 1:20c8438edaee 30 * #include "mbed.h"
ChuckTimber 1:20c8438edaee 31 * #include "button.h"
ChuckTimber 6:b6a97933b3d5 32 *
ChuckTimber 1:20c8438edaee 33 * BTN btn(dp13);
ChuckTimber 6:b6a97933b3d5 34 *
ChuckTimber 1:20c8438edaee 35 * int main()
ChuckTimber 1:20c8438edaee 36 * {
ChuckTimber 1:20c8438edaee 37 * int mode = 0;
ChuckTimber 1:20c8438edaee 38 * int value;
ChuckTimber 6:b6a97933b3d5 39 *
ChuckTimber 1:20c8438edaee 40 * btn.CMD = 0;
ChuckTimber 1:20c8438edaee 41 * while(1) {
ChuckTimber 1:20c8438edaee 42 * if(btn.CMD) {
ChuckTimber 1:20c8438edaee 43 * mode++;
ChuckTimber 1:20c8438edaee 44 * btn.CMD = 0;
ChuckTimber 1:20c8438edaee 45 * srand( time(NULL) );
ChuckTimber 1:20c8438edaee 46 * }
ChuckTimber 1:20c8438edaee 47 * if (mode % 2) value = rand();
ChuckTimber 1:20c8438edaee 48 * }
ChuckTimber 1:20c8438edaee 49 * }
ChuckTimber 0:f57033bb0e05 50 * @endcode
ChuckTimber 0:f57033bb0e05 51 */
ChuckTimber 6:b6a97933b3d5 52 class BTN
ChuckTimber 6:b6a97933b3d5 53 {
ChuckTimber 0:f57033bb0e05 54
ChuckTimber 0:f57033bb0e05 55 public:
ChuckTimber 6:b6a97933b3d5 56 unsigned char CMD; /*!< CMD represents that the button has been pressed.
ChuckTimber 6:b6a97933b3d5 57 * @retval 1 - button has been pressed
ChuckTimber 6:b6a97933b3d5 58 */
ChuckTimber 6:b6a97933b3d5 59
ChuckTimber 6:b6a97933b3d5 60 unsigned char STAT; /*!< STAT represents that the button is being pressed.
ChuckTimber 6:b6a97933b3d5 61 * @retval 1 - button is being pressed
ChuckTimber 6:b6a97933b3d5 62 */
ChuckTimber 6:b6a97933b3d5 63
ChuckTimber 6:b6a97933b3d5 64 /** constructor
ChuckTimber 6:b6a97933b3d5 65 *
ChuckTimber 6:b6a97933b3d5 66 * @param pin - button pin number (DigitalIn), the pin is PullUp internally
ChuckTimber 6:b6a97933b3d5 67 */
ChuckTimber 0:f57033bb0e05 68 BTN(PinName pin);
ChuckTimber 6:b6a97933b3d5 69
ChuckTimber 6:b6a97933b3d5 70 /// destructor
ChuckTimber 6:b6a97933b3d5 71 virtual ~BTN() { };
ChuckTimber 0:f57033bb0e05 72
ChuckTimber 0:f57033bb0e05 73 private:
ChuckTimber 3:1c47d318e457 74 /** sample_btn input and process */
ChuckTimber 0:f57033bb0e05 75 void sample_btn(void);
ChuckTimber 0:f57033bb0e05 76 unsigned char FIL;
ChuckTimber 0:f57033bb0e05 77 DigitalIn _Pin;
ChuckTimber 0:f57033bb0e05 78 Ticker _Tick;
ChuckTimber 0:f57033bb0e05 79
ChuckTimber 0:f57033bb0e05 80 };
ChuckTimber 0:f57033bb0e05 81
ChuckTimber 0:f57033bb0e05 82 }
ChuckTimber 0:f57033bb0e05 83 #endif