David's line following code from the LVBots competition, 2015.
Dependencies: GeneralDebouncer Pacer PololuEncoder mbed
Fork of DeadReckoning by
buttons.cpp@16:8eaa5bc2bdb1, 2014-02-24 (annotated)
- Committer:
- DavidEGrayson
- Date:
- Mon Feb 24 01:26:00 2014 +0000
- Revision:
- 16:8eaa5bc2bdb1
- Parent:
- 11:bd14d512340a
- Child:
- 17:2df9861f53ee
Got debounced button pressing to work.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DavidEGrayson | 11:bd14d512340a | 1 | #include <mbed.h> |
DavidEGrayson | 11:bd14d512340a | 2 | #include "buttons.h" |
DavidEGrayson | 16:8eaa5bc2bdb1 | 3 | #include "GeneralDebouncer.h" |
DavidEGrayson | 16:8eaa5bc2bdb1 | 4 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 5 | #define BUTTON_DEBOUNCE_TIME 20000 |
DavidEGrayson | 11:bd14d512340a | 6 | |
DavidEGrayson | 11:bd14d512340a | 7 | DigitalIn button1(p13); |
DavidEGrayson | 11:bd14d512340a | 8 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 9 | GeneralDebouncer button1Debouncer(5000); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 10 | |
DavidEGrayson | 11:bd14d512340a | 11 | void buttonsInit() |
DavidEGrayson | 11:bd14d512340a | 12 | { |
DavidEGrayson | 11:bd14d512340a | 13 | button1.mode(PullUp); |
DavidEGrayson | 11:bd14d512340a | 14 | } |
DavidEGrayson | 11:bd14d512340a | 15 | |
DavidEGrayson | 11:bd14d512340a | 16 | bool button1IsPressed() |
DavidEGrayson | 11:bd14d512340a | 17 | { |
DavidEGrayson | 11:bd14d512340a | 18 | return button1.read() == 0; |
DavidEGrayson | 16:8eaa5bc2bdb1 | 19 | } |
DavidEGrayson | 16:8eaa5bc2bdb1 | 20 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 21 | void button1Montior() |
DavidEGrayson | 16:8eaa5bc2bdb1 | 22 | { |
DavidEGrayson | 16:8eaa5bc2bdb1 | 23 | button1Debouncer.update(button1IsPressed()); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 24 | } |
DavidEGrayson | 16:8eaa5bc2bdb1 | 25 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 26 | bool button1DefinitelyInState(bool state) |
DavidEGrayson | 16:8eaa5bc2bdb1 | 27 | { |
DavidEGrayson | 16:8eaa5bc2bdb1 | 28 | button1Montior(); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 29 | return button1Debouncer.getState() == state && |
DavidEGrayson | 16:8eaa5bc2bdb1 | 30 | button1Debouncer.getTimeInCurrentStateMicroseconds() > BUTTON_DEBOUNCE_TIME; |
DavidEGrayson | 16:8eaa5bc2bdb1 | 31 | } |
DavidEGrayson | 16:8eaa5bc2bdb1 | 32 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 33 | bool button1DefinitelyPressed() |
DavidEGrayson | 16:8eaa5bc2bdb1 | 34 | { |
DavidEGrayson | 16:8eaa5bc2bdb1 | 35 | return button1DefinitelyInState(true); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 36 | } |
DavidEGrayson | 16:8eaa5bc2bdb1 | 37 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 38 | bool button1DefinitelyReleased() |
DavidEGrayson | 16:8eaa5bc2bdb1 | 39 | { |
DavidEGrayson | 16:8eaa5bc2bdb1 | 40 | return button1DefinitelyInState(false); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 41 | } |
DavidEGrayson | 16:8eaa5bc2bdb1 | 42 | |
DavidEGrayson | 16:8eaa5bc2bdb1 | 43 |