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
line_sensors.cpp@48:597738b77f77, 2019-08-13 (annotated)
- Committer:
- DavidEGrayson
- Date:
- Tue Aug 13 21:21:17 2019 +0000
- Revision:
- 48:597738b77f77
- Parent:
- 40:6fa672be85ec
Changes from before the contest, I think.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DavidEGrayson | 10:e4dd36148539 | 1 | #include "line_sensors.h" |
DavidEGrayson | 10:e4dd36148539 | 2 | |
DavidEGrayson | 31:739b91331f31 | 3 | DigitalInOut lineSensorsDigital[LINE_SENSOR_COUNT] = { |
DavidEGrayson | 32:83a13b06093c | 4 | DigitalInOut(p18), // white wire, left-most sensor |
DavidEGrayson | 31:739b91331f31 | 5 | DigitalInOut(p19), // orange wire, middle sensor |
DavidEGrayson | 32:83a13b06093c | 6 | DigitalInOut(p20), // brown wire, right-most sensor |
DavidEGrayson | 29:cfcf08d8ac79 | 7 | }; |
DavidEGrayson | 29:cfcf08d8ac79 | 8 | |
DavidEGrayson | 31:739b91331f31 | 9 | void readSensors(uint16_t * values) |
DavidEGrayson | 31:739b91331f31 | 10 | { |
DavidEGrayson | 31:739b91331f31 | 11 | for(uint8_t i = 0; i < LINE_SENSOR_COUNT; i++) |
DavidEGrayson | 31:739b91331f31 | 12 | { |
DavidEGrayson | 31:739b91331f31 | 13 | values[i] = 1000; |
DavidEGrayson | 31:739b91331f31 | 14 | lineSensorsDigital[i].mode(PullNone); |
DavidEGrayson | 31:739b91331f31 | 15 | lineSensorsDigital[i].output(); |
DavidEGrayson | 31:739b91331f31 | 16 | lineSensorsDigital[i].write(1); |
DavidEGrayson | 31:739b91331f31 | 17 | } |
DavidEGrayson | 31:739b91331f31 | 18 | |
DavidEGrayson | 31:739b91331f31 | 19 | wait_us(10); |
DavidEGrayson | 31:739b91331f31 | 20 | |
DavidEGrayson | 31:739b91331f31 | 21 | Timer timer; |
DavidEGrayson | 31:739b91331f31 | 22 | timer.start(); |
DavidEGrayson | 31:739b91331f31 | 23 | |
DavidEGrayson | 31:739b91331f31 | 24 | for(uint8_t i = 0; i < LINE_SENSOR_COUNT; i++) |
DavidEGrayson | 31:739b91331f31 | 25 | { |
DavidEGrayson | 31:739b91331f31 | 26 | lineSensorsDigital[i].input(); |
DavidEGrayson | 31:739b91331f31 | 27 | } |
DavidEGrayson | 31:739b91331f31 | 28 | |
DavidEGrayson | 31:739b91331f31 | 29 | while(timer.read_us() < 1000) |
DavidEGrayson | 31:739b91331f31 | 30 | { |
DavidEGrayson | 31:739b91331f31 | 31 | for(uint8_t i = 0; i < LINE_SENSOR_COUNT; i++) |
DavidEGrayson | 31:739b91331f31 | 32 | { |
DavidEGrayson | 31:739b91331f31 | 33 | if (values[i] == 1000 && lineSensorsDigital[i].read() == 0) |
DavidEGrayson | 31:739b91331f31 | 34 | { |
DavidEGrayson | 31:739b91331f31 | 35 | values[i] = timer.read_us(); |
DavidEGrayson | 31:739b91331f31 | 36 | } |
DavidEGrayson | 31:739b91331f31 | 37 | } |
DavidEGrayson | 31:739b91331f31 | 38 | } |
DavidEGrayson | 31:739b91331f31 | 39 | } |