![](/media/cache/profiles/ebb9a55061af33b68d38f7ce72e4460f.50x50_q85.jpg)
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
- Committer:
- DavidEGrayson
- Date:
- 2014-02-20
- Revision:
- 6:89a39870e23d
- Parent:
- 5:01ad080dc4fa
- Child:
- 7:85b8b5acfb22
File content as of revision 6:89a39870e23d:
#include <mbed.h> #include "PololuEncoder.h" #include "Pacer.h" #include "motors.h" DigitalOut led1(LED1), led2(LED2); Serial pc(USBTX, USBRX); #define ENCODER1 0x00 #define ENCODER2 0x01 const PinName encoderPin1A = p6, encoderPin1B = p7, encoderPin2A = p8, encoderPin2B = p9; PololuEncoderBuffer encoderBuffer; PololuEncoder encoder1(encoderPin1A, encoderPin1B, &encoderBuffer, ENCODER1); PololuEncoder encoder2(encoderPin2A, encoderPin2B, &encoderBuffer, ENCODER2); int main() { pc.baud(115200); // Enable pull-ups on encoder pins and give them a chance to settle. DigitalIn(encoderPin1A).mode(PullUp); DigitalIn(encoderPin1B).mode(PullUp); DigitalIn(encoderPin2A).mode(PullUp); DigitalIn(encoderPin2B).mode(PullUp); wait_us(50); encoder1.init(); encoder2.init(); motors_init(); motors_speed_set(600, 5); Pacer reportPacer(500000); Pacer blinkPacer(200000); uint32_t eventCount = 0; uint32_t count = 0; while(1) { while(encoderBuffer.hasEvents()) { PololuEncoderEvent event = encoderBuffer.readEvent(); eventCount += 1; if (event == POLOLU_ENCODER_EVENT_ERR | ENCODER1) { pc.puts("error\n"); } else if (event == POLOLU_ENCODER_EVENT_INC | ENCODER1) { count += 1; } else if (event == POLOLU_ENCODER_EVENT_DEC | ENCODER1) { count -= 1; } } if(reportPacer.pace()) { led2 = 1; pc.printf("%8x\n", LPC_PWM1->MCR); led2 = 0; } if (blinkPacer.pace()) { led1 = !led1; } } }