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
Revision 17:2df9861f53ee, committed 2014-02-24
- Comitter:
- DavidEGrayson
- Date:
- Mon Feb 24 01:38:55 2014 +0000
- Parent:
- 16:8eaa5bc2bdb1
- Child:
- 18:b65fbb795396
- Commit message:
- Created a stub driveHome routine that we need to fill in.
Changed in this revision
--- a/buttons.cpp Mon Feb 24 01:26:00 2014 +0000 +++ b/buttons.cpp Mon Feb 24 01:38:55 2014 +0000 @@ -27,7 +27,7 @@ { button1Montior(); return button1Debouncer.getState() == state && - button1Debouncer.getTimeInCurrentStateMicroseconds() > BUTTON_DEBOUNCE_TIME; + button1Debouncer.getTimeInCurrentStateMicroseconds() > BUTTON_DEBOUNCE_TIME; } bool button1DefinitelyPressed()
--- a/main.cpp Mon Feb 24 01:26:00 2014 +0000 +++ b/main.cpp Mon Feb 24 01:38:55 2014 +0000 @@ -23,7 +23,8 @@ //testEncoders(); //testLineSensors(); //testReckoner(); - testButtons(); + //testButtons(); + testDriveHome(); while(1) { @@ -31,6 +32,15 @@ } } +void __attribute__((noreturn)) driveHome() +{ + led1 = 1; led2 = 1; led3 = 0; led4 = 0; + while(1) + { + + } +} + void updateReckonerFromEncoders() { while(encoderBuffer.hasEvents()) @@ -38,19 +48,19 @@ PololuEncoderEvent event = encoderBuffer.readEvent(); switch(event) { - case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC: - reckoner.handleTickLeftForward(); - break; - case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC: - reckoner.handleTickLeftBackward(); - break; - case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC: - reckoner.handleTickRightForward(); - break; - case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC: - reckoner.handleTickRightBackward(); - break; - + case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC: + reckoner.handleTickLeftForward(); + break; + case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC: + reckoner.handleTickLeftBackward(); + break; + case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC: + reckoner.handleTickRightForward(); + break; + case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC: + reckoner.handleTickRightBackward(); + break; } } } +
--- a/test.cpp Mon Feb 24 01:26:00 2014 +0000 +++ b/test.cpp Mon Feb 24 01:38:55 2014 +0000 @@ -12,39 +12,26 @@ #include "reckoner.h" #include "buttons.h" -#include <GeneralDebouncer.h> // tmphax -extern GeneralDebouncer button1Debouncer; // tmphax - +void __attribute__((noreturn)) driveHome(); void printBar(const char * name, uint16_t adcResult); -void testDriveHomoe() +void testDriveHome() { - led1 = 1; - + led1 = 1; + while(button1DefinitelyPressed()) + { + updateReckonerFromEncoders(); + } + driveHome(); } + void testButtons() { led1 = 1; - Pacer reportPacer(100000); - - while(!button1DefinitelyReleased()) - { - if (false && reportPacer.pace()) - { - pc.printf("%1d %11d %11d %11d %11d\r\n", - button1Debouncer.firstReportReceived, - button1Debouncer.maxUpdateIntervalMicroseconds, - button1Debouncer.lastReportTimeMicroseconds, - button1Debouncer.spanBeginTimeMicroseconds, - button1Debouncer.currentState - ); - } - } - while(!button1DefinitelyPressed()) - { - } + while(!button1DefinitelyReleased()); + while(!button1DefinitelyPressed()); led2 = 1; while(!button1DefinitelyReleased());
--- a/test.h Mon Feb 24 01:26:00 2014 +0000 +++ b/test.h Mon Feb 24 01:38:55 2014 +0000 @@ -9,4 +9,5 @@ // These are actually defined in main.h: -void updateReckonerFromEncoders(); \ No newline at end of file +void updateReckonerFromEncoders(); +void __attribute__((noreturn)) driveHome(); \ No newline at end of file