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:
Sun Feb 23 22:23:34 2014 +0000
Revision:
12:835a4d24ae3b
Parent:
10:e4dd36148539
Child:
16:8eaa5bc2bdb1
Made the Reckoner class and wrote a routine to help test it.;

Who changed what in which revision?

UserRevisionLine numberNew 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 }