David's line following code from the LVBots competition, 2015.

Dependencies:   GeneralDebouncer Pacer PololuEncoder mbed

Fork of DeadReckoning by David Grayson

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?

UserRevisionLine numberNew 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 }