David's line following code from the LVBots competition, 2015.

Dependencies:   GeneralDebouncer Pacer PololuEncoder mbed

Fork of DeadReckoning by David Grayson

Committer:
DavidEGrayson
Date:
Thu Apr 16 22:00:15 2015 +0000
Revision:
57:99bec7fab454
Parent:
17:2df9861f53ee
Doubled the encoder counts for indicating the end of the course because we might have to start a little bit back from the finish line.

Who changed what in which revision?

UserRevisionLine numberNew 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 17:2df9861f53ee 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