button procedure library
button.cpp@1:20c8438edaee, 2014-08-06 (annotated)
- Committer:
- ChuckTimber
- Date:
- Wed Aug 06 23:44:39 2014 +0000
- Revision:
- 1:20c8438edaee
- Parent:
- 0:f57033bb0e05
- Child:
- 2:df827b705b98
BTN_SAMPLING_PERIOD defined.
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 | 0:f57033bb0e05 | 3 | |
ChuckTimber | 1:20c8438edaee | 4 | /** class to handle button input |
ChuckTimber | 1:20c8438edaee | 5 | * The class use DigitalIn and Ticker |
ChuckTimber | 0:f57033bb0e05 | 6 | * |
ChuckTimber | 0:f57033bb0e05 | 7 | * Example: |
ChuckTimber | 0:f57033bb0e05 | 8 | * @code |
ChuckTimber | 1:20c8438edaee | 9 | * // Button sample |
ChuckTimber | 1:20c8438edaee | 10 | * #include "mbed.h" |
ChuckTimber | 1:20c8438edaee | 11 | * #include "button.h" |
ChuckTimber | 1:20c8438edaee | 12 | * |
ChuckTimber | 1:20c8438edaee | 13 | * BTN btn(dp13); |
ChuckTimber | 1:20c8438edaee | 14 | * |
ChuckTimber | 1:20c8438edaee | 15 | * int main() |
ChuckTimber | 1:20c8438edaee | 16 | * { |
ChuckTimber | 1:20c8438edaee | 17 | * int mode = 0; |
ChuckTimber | 1:20c8438edaee | 18 | * int value; |
ChuckTimber | 1:20c8438edaee | 19 | * |
ChuckTimber | 1:20c8438edaee | 20 | * btn.CMD = 0; |
ChuckTimber | 1:20c8438edaee | 21 | * while(1) { |
ChuckTimber | 1:20c8438edaee | 22 | * if(btn.CMD) { |
ChuckTimber | 1:20c8438edaee | 23 | * mode++; |
ChuckTimber | 1:20c8438edaee | 24 | * btn.CMD = 0; |
ChuckTimber | 1:20c8438edaee | 25 | * srand( time(NULL) ); |
ChuckTimber | 1:20c8438edaee | 26 | * } |
ChuckTimber | 1:20c8438edaee | 27 | * if (mode % 2) value = rand(); |
ChuckTimber | 1:20c8438edaee | 28 | * } |
ChuckTimber | 1:20c8438edaee | 29 | * } |
ChuckTimber | 0:f57033bb0e05 | 30 | * @endcode |
ChuckTimber | 0:f57033bb0e05 | 31 | */ |
ChuckTimber | 0:f57033bb0e05 | 32 | |
ChuckTimber | 0:f57033bb0e05 | 33 | using namespace mbed; |
ChuckTimber | 0:f57033bb0e05 | 34 | |
ChuckTimber | 1:20c8438edaee | 35 | // private function |
ChuckTimber | 1:20c8438edaee | 36 | /** sample_btn input and process |
ChuckTimber | 1:20c8438edaee | 37 | * |
ChuckTimber | 1:20c8438edaee | 38 | */ |
ChuckTimber | 0:f57033bb0e05 | 39 | void BTN::sample_btn() |
ChuckTimber | 0:f57033bb0e05 | 40 | { |
ChuckTimber | 0:f57033bb0e05 | 41 | unsigned char a, b; |
ChuckTimber | 0:f57033bb0e05 | 42 | |
ChuckTimber | 0:f57033bb0e05 | 43 | a = _Pin; |
ChuckTimber | 0:f57033bb0e05 | 44 | |
ChuckTimber | 0:f57033bb0e05 | 45 | if (a == FIL) { |
ChuckTimber | 0:f57033bb0e05 | 46 | b = STAT; |
ChuckTimber | 0:f57033bb0e05 | 47 | STAT = a; |
ChuckTimber | 0:f57033bb0e05 | 48 | b = (b ^ a) & a; |
ChuckTimber | 0:f57033bb0e05 | 49 | if (b) CMD = b; |
ChuckTimber | 0:f57033bb0e05 | 50 | } |
ChuckTimber | 0:f57033bb0e05 | 51 | FIL = a; |
ChuckTimber | 0:f57033bb0e05 | 52 | } |
ChuckTimber | 0:f57033bb0e05 | 53 | |
ChuckTimber | 1:20c8438edaee | 54 | // constructor |
ChuckTimber | 1:20c8438edaee | 55 | /** Create a BTN object connected to a DigtalIn pin |
ChuckTimber | 1:20c8438edaee | 56 | * |
ChuckTimber | 1:20c8438edaee | 57 | * @param pin - DigitalIn pin connected to the switch |
ChuckTimber | 1:20c8438edaee | 58 | */ |
ChuckTimber | 0:f57033bb0e05 | 59 | BTN::BTN(PinName pin) : _Pin(pin) { |
ChuckTimber | 0:f57033bb0e05 | 60 | CMD = STAT = FIL = 0; |
ChuckTimber | 1:20c8438edaee | 61 | _Tick.attach(this, &BTN::sample_btn, BTN_SAMPLING_PERIOD); |
ChuckTimber | 0:f57033bb0e05 | 62 | } |