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:
Sat Jul 27 22:52:19 2019 +0000
Revision:
43:0e985a58f174
Parent:
17:2df9861f53ee
Changed reckoner to use readings from turnSensor (Gyro) to get its direction vector instead of encoder ticks.

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