button procedure library
button.cpp@4:d6a45bd85a43, 2014-08-09 (annotated)
- Committer:
- ChuckTimber
- Date:
- Sat Aug 09 04:37:50 2014 +0000
- Revision:
- 4:d6a45bd85a43
- Parent:
- 3:1c47d318e457
- Child:
- 5:04236df532fb
Fixed switch polarity.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ChuckTimber | 0:f57033bb0e05 | 1 | #include "button.h" |
ChuckTimber | 0:f57033bb0e05 | 2 | #include "mbed.h" |
ChuckTimber | 3:1c47d318e457 | 3 | /** |
ChuckTimber | 3:1c47d318e457 | 4 | * @file button.cpp |
ChuckTimber | 3:1c47d318e457 | 5 | * Project button handling Library |
ChuckTimber | 3:1c47d318e457 | 6 | * @brief button handling library for mbed |
ChuckTimber | 4:d6a45bd85a43 | 7 | * @version 1.01 |
ChuckTimber | 3:1c47d318e457 | 8 | * @author Chuck Timber |
ChuckTimber | 3:1c47d318e457 | 9 | * @date 07/08/2014 |
ChuckTimber | 3:1c47d318e457 | 10 | */ |
ChuckTimber | 3:1c47d318e457 | 11 | /** class to handle button input |
ChuckTimber | 1:20c8438edaee | 12 | * The class use DigitalIn and Ticker |
ChuckTimber | 0:f57033bb0e05 | 13 | * |
ChuckTimber | 0:f57033bb0e05 | 14 | * Example: |
ChuckTimber | 0:f57033bb0e05 | 15 | * @code |
ChuckTimber | 1:20c8438edaee | 16 | * // Button sample |
ChuckTimber | 1:20c8438edaee | 17 | * #include "mbed.h" |
ChuckTimber | 1:20c8438edaee | 18 | * #include "button.h" |
ChuckTimber | 1:20c8438edaee | 19 | * |
ChuckTimber | 1:20c8438edaee | 20 | * BTN btn(dp13); |
ChuckTimber | 1:20c8438edaee | 21 | * |
ChuckTimber | 1:20c8438edaee | 22 | * int main() |
ChuckTimber | 1:20c8438edaee | 23 | * { |
ChuckTimber | 1:20c8438edaee | 24 | * int mode = 0; |
ChuckTimber | 1:20c8438edaee | 25 | * int value; |
ChuckTimber | 1:20c8438edaee | 26 | * |
ChuckTimber | 1:20c8438edaee | 27 | * btn.CMD = 0; |
ChuckTimber | 1:20c8438edaee | 28 | * while(1) { |
ChuckTimber | 1:20c8438edaee | 29 | * if(btn.CMD) { |
ChuckTimber | 1:20c8438edaee | 30 | * mode++; |
ChuckTimber | 1:20c8438edaee | 31 | * btn.CMD = 0; |
ChuckTimber | 1:20c8438edaee | 32 | * srand( time(NULL) ); |
ChuckTimber | 1:20c8438edaee | 33 | * } |
ChuckTimber | 1:20c8438edaee | 34 | * if (mode % 2) value = rand(); |
ChuckTimber | 1:20c8438edaee | 35 | * } |
ChuckTimber | 1:20c8438edaee | 36 | * } |
ChuckTimber | 0:f57033bb0e05 | 37 | * @endcode |
ChuckTimber | 0:f57033bb0e05 | 38 | */ |
ChuckTimber | 0:f57033bb0e05 | 39 | |
ChuckTimber | 0:f57033bb0e05 | 40 | using namespace mbed; |
ChuckTimber | 0:f57033bb0e05 | 41 | |
ChuckTimber | 1:20c8438edaee | 42 | // private function |
ChuckTimber | 3:1c47d318e457 | 43 | /** sample_btn input and process */ |
ChuckTimber | 0:f57033bb0e05 | 44 | void BTN::sample_btn() |
ChuckTimber | 0:f57033bb0e05 | 45 | { |
ChuckTimber | 0:f57033bb0e05 | 46 | unsigned char a, b; |
ChuckTimber | 0:f57033bb0e05 | 47 | |
ChuckTimber | 4:d6a45bd85a43 | 48 | a = (_Pin) ? 0 : 1; |
ChuckTimber | 0:f57033bb0e05 | 49 | |
ChuckTimber | 0:f57033bb0e05 | 50 | if (a == FIL) { |
ChuckTimber | 0:f57033bb0e05 | 51 | b = STAT; |
ChuckTimber | 0:f57033bb0e05 | 52 | STAT = a; |
ChuckTimber | 0:f57033bb0e05 | 53 | b = (b ^ a) & a; |
ChuckTimber | 0:f57033bb0e05 | 54 | if (b) CMD = b; |
ChuckTimber | 0:f57033bb0e05 | 55 | } |
ChuckTimber | 0:f57033bb0e05 | 56 | FIL = a; |
ChuckTimber | 0:f57033bb0e05 | 57 | } |
ChuckTimber | 0:f57033bb0e05 | 58 | |
ChuckTimber | 3:1c47d318e457 | 59 | // constructor |
ChuckTimber | 3:1c47d318e457 | 60 | /** Create a BTN object connected to a DigtalIn pin |
ChuckTimber | 3:1c47d318e457 | 61 | * |
ChuckTimber | 3:1c47d318e457 | 62 | * @param pin - DigitalIn pin connected to the switch |
ChuckTimber | 3:1c47d318e457 | 63 | */ |
ChuckTimber | 0:f57033bb0e05 | 64 | BTN::BTN(PinName pin) : _Pin(pin) { |
ChuckTimber | 0:f57033bb0e05 | 65 | CMD = STAT = FIL = 0; |
ChuckTimber | 1:20c8438edaee | 66 | _Tick.attach(this, &BTN::sample_btn, BTN_SAMPLING_PERIOD); |
ChuckTimber | 0:f57033bb0e05 | 67 | } |