David's dead reckoning code for the LVBots competition on March 6th. Uses the mbed LPC1768, DRV8835, QTR-3RC, and two DC motors with encoders.

Dependencies:   PololuEncoder Pacer mbed GeneralDebouncer

Committer:
DavidEGrayson
Date:
Thu Mar 13 17:49:43 2014 +0000
Revision:
38:5e93a479c244
Parent:
17:2df9861f53ee
The final version of the code that was used for the competition.;

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