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:
Mon Feb 24 01:38:55 2014 +0000
Revision:
17:2df9861f53ee
Parent:
16:8eaa5bc2bdb1
Child:
18:b65fbb795396
Created a stub driveHome routine that we need to fill in.

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 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 17:2df9861f53ee 26 //testButtons();
DavidEGrayson 17:2df9861f53ee 27 testDriveHome();
DavidEGrayson 2:968338353aef 28
DavidEGrayson 4:1b20a11765c8 29 while(1)
DavidEGrayson 4:1b20a11765c8 30 {
DavidEGrayson 9:9734347b5756 31
DavidEGrayson 0:e77a0edb9878 32 }
DavidEGrayson 0:e77a0edb9878 33 }
DavidEGrayson 12:835a4d24ae3b 34
DavidEGrayson 17:2df9861f53ee 35 void __attribute__((noreturn)) driveHome()
DavidEGrayson 17:2df9861f53ee 36 {
DavidEGrayson 17:2df9861f53ee 37 led1 = 1; led2 = 1; led3 = 0; led4 = 0;
DavidEGrayson 17:2df9861f53ee 38 while(1)
DavidEGrayson 17:2df9861f53ee 39 {
DavidEGrayson 17:2df9861f53ee 40
DavidEGrayson 17:2df9861f53ee 41 }
DavidEGrayson 17:2df9861f53ee 42 }
DavidEGrayson 17:2df9861f53ee 43
DavidEGrayson 12:835a4d24ae3b 44 void updateReckonerFromEncoders()
DavidEGrayson 12:835a4d24ae3b 45 {
DavidEGrayson 12:835a4d24ae3b 46 while(encoderBuffer.hasEvents())
DavidEGrayson 12:835a4d24ae3b 47 {
DavidEGrayson 12:835a4d24ae3b 48 PololuEncoderEvent event = encoderBuffer.readEvent();
DavidEGrayson 12:835a4d24ae3b 49 switch(event)
DavidEGrayson 12:835a4d24ae3b 50 {
DavidEGrayson 17:2df9861f53ee 51 case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC:
DavidEGrayson 17:2df9861f53ee 52 reckoner.handleTickLeftForward();
DavidEGrayson 17:2df9861f53ee 53 break;
DavidEGrayson 17:2df9861f53ee 54 case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC:
DavidEGrayson 17:2df9861f53ee 55 reckoner.handleTickLeftBackward();
DavidEGrayson 17:2df9861f53ee 56 break;
DavidEGrayson 17:2df9861f53ee 57 case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC:
DavidEGrayson 17:2df9861f53ee 58 reckoner.handleTickRightForward();
DavidEGrayson 17:2df9861f53ee 59 break;
DavidEGrayson 17:2df9861f53ee 60 case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC:
DavidEGrayson 17:2df9861f53ee 61 reckoner.handleTickRightBackward();
DavidEGrayson 17:2df9861f53ee 62 break;
DavidEGrayson 12:835a4d24ae3b 63 }
DavidEGrayson 12:835a4d24ae3b 64 }
DavidEGrayson 12:835a4d24ae3b 65 }
DavidEGrayson 17:2df9861f53ee 66