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
main.cpp@14:c8cca3687e64, 2014-02-24 (annotated)
- Committer:
- DavidEGrayson
- Date:
- Mon Feb 24 00:07:54 2014 +0000
- Revision:
- 14:c8cca3687e64
- Parent:
- 12:835a4d24ae3b
- Child:
- 16:8eaa5bc2bdb1
Started doing an experiment to see what dA really is.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DavidEGrayson | 0:e77a0edb9878 | 1 | #include <mbed.h> |
DavidEGrayson | 8:78b1ff957cba | 2 | #include <Pacer.h> |
DavidEGrayson | 0:e77a0edb9878 | 3 | |
DavidEGrayson | 8:78b1ff957cba | 4 | #include "motors.h" |
DavidEGrayson | 8:78b1ff957cba | 5 | #include "encoders.h" |
DavidEGrayson | 9:9734347b5756 | 6 | #include "leds.h" |
DavidEGrayson | 8:78b1ff957cba | 7 | #include "pc_serial.h" |
DavidEGrayson | 9:9734347b5756 | 8 | #include "test.h" |
DavidEGrayson | 12:835a4d24ae3b | 9 | #include "reckoner.h" |
DavidEGrayson | 0:e77a0edb9878 | 10 | |
DavidEGrayson | 10:e4dd36148539 | 11 | int __attribute__((noreturn)) main() |
DavidEGrayson | 2:968338353aef | 12 | { |
DavidEGrayson | 2:968338353aef | 13 | pc.baud(115200); |
DavidEGrayson | 2:968338353aef | 14 | |
DavidEGrayson | 2:968338353aef | 15 | // Enable pull-ups on encoder pins and give them a chance to settle. |
DavidEGrayson | 9:9734347b5756 | 16 | encodersInit(); |
DavidEGrayson | 9:9734347b5756 | 17 | motorsInit(); |
DavidEGrayson | 4:1b20a11765c8 | 18 | |
DavidEGrayson | 8:78b1ff957cba | 19 | // Test routines |
DavidEGrayson | 9:9734347b5756 | 20 | //testMotors(); |
DavidEGrayson | 10:e4dd36148539 | 21 | //testEncoders(); |
DavidEGrayson | 12:835a4d24ae3b | 22 | //testLineSensors(); |
DavidEGrayson | 12:835a4d24ae3b | 23 | testReckoner(); |
DavidEGrayson | 2:968338353aef | 24 | |
DavidEGrayson | 4:1b20a11765c8 | 25 | while(1) |
DavidEGrayson | 4:1b20a11765c8 | 26 | { |
DavidEGrayson | 9:9734347b5756 | 27 | |
DavidEGrayson | 0:e77a0edb9878 | 28 | } |
DavidEGrayson | 0:e77a0edb9878 | 29 | } |
DavidEGrayson | 12:835a4d24ae3b | 30 | |
DavidEGrayson | 12:835a4d24ae3b | 31 | void updateReckonerFromEncoders() |
DavidEGrayson | 12:835a4d24ae3b | 32 | { |
DavidEGrayson | 12:835a4d24ae3b | 33 | while(encoderBuffer.hasEvents()) |
DavidEGrayson | 12:835a4d24ae3b | 34 | { |
DavidEGrayson | 12:835a4d24ae3b | 35 | PololuEncoderEvent event = encoderBuffer.readEvent(); |
DavidEGrayson | 12:835a4d24ae3b | 36 | switch(event) |
DavidEGrayson | 12:835a4d24ae3b | 37 | { |
DavidEGrayson | 12:835a4d24ae3b | 38 | case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC: |
DavidEGrayson | 12:835a4d24ae3b | 39 | reckoner.handleTickLeftForward(); |
DavidEGrayson | 12:835a4d24ae3b | 40 | break; |
DavidEGrayson | 12:835a4d24ae3b | 41 | case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC: |
DavidEGrayson | 12:835a4d24ae3b | 42 | reckoner.handleTickLeftBackward(); |
DavidEGrayson | 12:835a4d24ae3b | 43 | break; |
DavidEGrayson | 12:835a4d24ae3b | 44 | case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC: |
DavidEGrayson | 12:835a4d24ae3b | 45 | reckoner.handleTickRightForward(); |
DavidEGrayson | 12:835a4d24ae3b | 46 | break; |
DavidEGrayson | 12:835a4d24ae3b | 47 | case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC: |
DavidEGrayson | 12:835a4d24ae3b | 48 | reckoner.handleTickRightBackward(); |
DavidEGrayson | 12:835a4d24ae3b | 49 | break; |
DavidEGrayson | 12:835a4d24ae3b | 50 | |
DavidEGrayson | 12:835a4d24ae3b | 51 | } |
DavidEGrayson | 12:835a4d24ae3b | 52 | } |
DavidEGrayson | 12:835a4d24ae3b | 53 | } |