David's line following code from the LVBots competition, 2015.
Dependencies: GeneralDebouncer Pacer PololuEncoder mbed
Fork of DeadReckoning by
main.cpp
- Committer:
- DavidEGrayson
- Date:
- 2014-02-20
- Revision:
- 3:59c80d4b4bf2
- Parent:
- 2:968338353aef
- Child:
- 4:1b20a11765c8
File content as of revision 3:59c80d4b4bf2:
#include <mbed.h> #include "PololuEncoder.h" #include "Pacer.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(); Pacer reportPacer(250000); 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; char str[80]; sprintf(str, "%8x %8x %8x\n", encoder1.getCount(), count, eventCount); pc.puts(str); led2 = 0; } if (blinkPacer.pace()) { led1 = !led1; } } }