David's line following code from the LVBots competition, 2015.
Dependencies: GeneralDebouncer Pacer PololuEncoder mbed
Fork of DeadReckoning by
main.cpp@2:968338353aef, 2014-02-20 (annotated)
- Committer:
- DavidEGrayson
- Date:
- Thu Feb 20 20:09:40 2014 +0000
- Revision:
- 2:968338353aef
- Parent:
- 1:d0d9653a4547
- Child:
- 3:59c80d4b4bf2
Moved the code to enable pull-ups into the app.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DavidEGrayson | 0:e77a0edb9878 | 1 | #include <mbed.h> |
DavidEGrayson | 0:e77a0edb9878 | 2 | #include "PololuEncoder.h" |
DavidEGrayson | 1:d0d9653a4547 | 3 | #include "Pacer.h" |
DavidEGrayson | 0:e77a0edb9878 | 4 | |
DavidEGrayson | 1:d0d9653a4547 | 5 | DigitalOut led1(LED1), led2(LED2); |
DavidEGrayson | 0:e77a0edb9878 | 6 | |
DavidEGrayson | 0:e77a0edb9878 | 7 | Serial pc(USBTX, USBRX); |
DavidEGrayson | 0:e77a0edb9878 | 8 | |
DavidEGrayson | 0:e77a0edb9878 | 9 | #define ENCODER1 0x00 |
DavidEGrayson | 0:e77a0edb9878 | 10 | |
DavidEGrayson | 2:968338353aef | 11 | const PinName encoderPin1A = p6, |
DavidEGrayson | 2:968338353aef | 12 | encoderPin1B = p7; |
DavidEGrayson | 2:968338353aef | 13 | |
DavidEGrayson | 0:e77a0edb9878 | 14 | PololuEncoderBuffer encoderBuffer; |
DavidEGrayson | 2:968338353aef | 15 | PololuEncoder encoder1(encoderPin1A, encoderPin1B, &encoderBuffer, ENCODER1); |
DavidEGrayson | 0:e77a0edb9878 | 16 | |
DavidEGrayson | 2:968338353aef | 17 | int main() |
DavidEGrayson | 2:968338353aef | 18 | { |
DavidEGrayson | 2:968338353aef | 19 | pc.baud(115200); |
DavidEGrayson | 2:968338353aef | 20 | |
DavidEGrayson | 2:968338353aef | 21 | // Enable pull-ups on encoder pins and give them a chance to settle. |
DavidEGrayson | 2:968338353aef | 22 | DigitalIn(encoderPin1A).mode(PullUp); |
DavidEGrayson | 2:968338353aef | 23 | DigitalIn(encoderPin1B).mode(PullUp); |
DavidEGrayson | 2:968338353aef | 24 | wait_us(50); |
DavidEGrayson | 2:968338353aef | 25 | encoder1.init(); |
DavidEGrayson | 2:968338353aef | 26 | |
DavidEGrayson | 1:d0d9653a4547 | 27 | Pacer reportPacer(250000); |
DavidEGrayson | 1:d0d9653a4547 | 28 | Pacer blinkPacer(200000); |
DavidEGrayson | 1:d0d9653a4547 | 29 | uint32_t eventCount = 0; |
DavidEGrayson | 0:e77a0edb9878 | 30 | while(1) { |
DavidEGrayson | 0:e77a0edb9878 | 31 | while(encoderBuffer.hasEvents()) |
DavidEGrayson | 0:e77a0edb9878 | 32 | { |
DavidEGrayson | 0:e77a0edb9878 | 33 | PololuEncoderEvent event = encoderBuffer.readEvent(); |
DavidEGrayson | 1:d0d9653a4547 | 34 | eventCount += 1; |
DavidEGrayson | 0:e77a0edb9878 | 35 | } |
DavidEGrayson | 2:968338353aef | 36 | |
DavidEGrayson | 1:d0d9653a4547 | 37 | if(reportPacer.pace()) |
DavidEGrayson | 1:d0d9653a4547 | 38 | { |
DavidEGrayson | 1:d0d9653a4547 | 39 | led2 = 1; |
DavidEGrayson | 2:968338353aef | 40 | char str[80]; |
DavidEGrayson | 2:968338353aef | 41 | sprintf(str, "%8x %8x\n", encoder1.getCount(), eventCount); |
DavidEGrayson | 2:968338353aef | 42 | pc.puts(str); |
DavidEGrayson | 1:d0d9653a4547 | 43 | led2 = 0; |
DavidEGrayson | 1:d0d9653a4547 | 44 | } |
DavidEGrayson | 2:968338353aef | 45 | |
DavidEGrayson | 1:d0d9653a4547 | 46 | if (blinkPacer.pace()) |
DavidEGrayson | 1:d0d9653a4547 | 47 | { |
DavidEGrayson | 1:d0d9653a4547 | 48 | led1 = !led1; |
DavidEGrayson | 1:d0d9653a4547 | 49 | } |
DavidEGrayson | 0:e77a0edb9878 | 50 | } |
DavidEGrayson | 0:e77a0edb9878 | 51 | } |