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@16:8eaa5bc2bdb1, 2014-02-24 (annotated)
- Committer:
- DavidEGrayson
- Date:
- Mon Feb 24 01:26:00 2014 +0000
- Revision:
- 16:8eaa5bc2bdb1
- Parent:
- 12:835a4d24ae3b
- Child:
- 17:2df9861f53ee
Got debounced button pressing to work.
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 | 16:8eaa5bc2bdb1 | 10 | #include "buttons.h" |
DavidEGrayson | 0:e77a0edb9878 | 11 | |
DavidEGrayson | 10:e4dd36148539 | 12 | int __attribute__((noreturn)) main() |
DavidEGrayson | 2:968338353aef | 13 | { |
DavidEGrayson | 2:968338353aef | 14 | pc.baud(115200); |
DavidEGrayson | 2:968338353aef | 15 | |
DavidEGrayson | 2:968338353aef | 16 | // Enable pull-ups on encoder pins and give them a chance to settle. |
DavidEGrayson | 9:9734347b5756 | 17 | encodersInit(); |
DavidEGrayson | 9:9734347b5756 | 18 | motorsInit(); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 19 | buttonsInit(); |
DavidEGrayson | 4:1b20a11765c8 | 20 | |
DavidEGrayson | 8:78b1ff957cba | 21 | // Test routines |
DavidEGrayson | 9:9734347b5756 | 22 | //testMotors(); |
DavidEGrayson | 10:e4dd36148539 | 23 | //testEncoders(); |
DavidEGrayson | 12:835a4d24ae3b | 24 | //testLineSensors(); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 25 | //testReckoner(); |
DavidEGrayson | 16:8eaa5bc2bdb1 | 26 | testButtons(); |
DavidEGrayson | 2:968338353aef | 27 | |
DavidEGrayson | 4:1b20a11765c8 | 28 | while(1) |
DavidEGrayson | 4:1b20a11765c8 | 29 | { |
DavidEGrayson | 9:9734347b5756 | 30 | |
DavidEGrayson | 0:e77a0edb9878 | 31 | } |
DavidEGrayson | 0:e77a0edb9878 | 32 | } |
DavidEGrayson | 12:835a4d24ae3b | 33 | |
DavidEGrayson | 12:835a4d24ae3b | 34 | void updateReckonerFromEncoders() |
DavidEGrayson | 12:835a4d24ae3b | 35 | { |
DavidEGrayson | 12:835a4d24ae3b | 36 | while(encoderBuffer.hasEvents()) |
DavidEGrayson | 12:835a4d24ae3b | 37 | { |
DavidEGrayson | 12:835a4d24ae3b | 38 | PololuEncoderEvent event = encoderBuffer.readEvent(); |
DavidEGrayson | 12:835a4d24ae3b | 39 | switch(event) |
DavidEGrayson | 12:835a4d24ae3b | 40 | { |
DavidEGrayson | 12:835a4d24ae3b | 41 | case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC: |
DavidEGrayson | 12:835a4d24ae3b | 42 | reckoner.handleTickLeftForward(); |
DavidEGrayson | 12:835a4d24ae3b | 43 | break; |
DavidEGrayson | 12:835a4d24ae3b | 44 | case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC: |
DavidEGrayson | 12:835a4d24ae3b | 45 | reckoner.handleTickLeftBackward(); |
DavidEGrayson | 12:835a4d24ae3b | 46 | break; |
DavidEGrayson | 12:835a4d24ae3b | 47 | case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC: |
DavidEGrayson | 12:835a4d24ae3b | 48 | reckoner.handleTickRightForward(); |
DavidEGrayson | 12:835a4d24ae3b | 49 | break; |
DavidEGrayson | 12:835a4d24ae3b | 50 | case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC: |
DavidEGrayson | 12:835a4d24ae3b | 51 | reckoner.handleTickRightBackward(); |
DavidEGrayson | 12:835a4d24ae3b | 52 | break; |
DavidEGrayson | 12:835a4d24ae3b | 53 | |
DavidEGrayson | 12:835a4d24ae3b | 54 | } |
DavidEGrayson | 12:835a4d24ae3b | 55 | } |
DavidEGrayson | 12:835a4d24ae3b | 56 | } |