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

Committer:
DavidEGrayson
Date:
Thu Mar 06 05:11:46 2014 +0000
Revision:
37:23000a47ed2b
Child:
40:6fa672be85ec
With a boost 0.2% to handleRight in the Reckoner, this code did very well on the course twice!!  Then I ran it the other way and it was more than a foot off :(

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DavidEGrayson 37:23000a47ed2b 1 #pragma once
DavidEGrayson 37:23000a47ed2b 2
DavidEGrayson 37:23000a47ed2b 3 #include "logger.h"
DavidEGrayson 37:23000a47ed2b 4 #include "main.h"
DavidEGrayson 37:23000a47ed2b 5 #include "pc_serial.h"
DavidEGrayson 37:23000a47ed2b 6
DavidEGrayson 37:23000a47ed2b 7 Logger::Logger()
DavidEGrayson 37:23000a47ed2b 8 {
DavidEGrayson 37:23000a47ed2b 9 entryIndex = 0;
DavidEGrayson 37:23000a47ed2b 10 }
DavidEGrayson 37:23000a47ed2b 11
DavidEGrayson 37:23000a47ed2b 12 bool Logger::isFull()
DavidEGrayson 37:23000a47ed2b 13 {
DavidEGrayson 37:23000a47ed2b 14 return entryIndex >= LOGGER_SIZE;
DavidEGrayson 37:23000a47ed2b 15 }
DavidEGrayson 37:23000a47ed2b 16
DavidEGrayson 37:23000a47ed2b 17 void Logger::log()
DavidEGrayson 37:23000a47ed2b 18 {
DavidEGrayson 37:23000a47ed2b 19 if (isFull())
DavidEGrayson 37:23000a47ed2b 20 {
DavidEGrayson 37:23000a47ed2b 21 return;
DavidEGrayson 37:23000a47ed2b 22 }
DavidEGrayson 37:23000a47ed2b 23
DavidEGrayson 37:23000a47ed2b 24 LogEntry * entry = &entries[entryIndex];
DavidEGrayson 37:23000a47ed2b 25 entryIndex++;
DavidEGrayson 37:23000a47ed2b 26
DavidEGrayson 37:23000a47ed2b 27 //entry->cos = reckoner.cos >> 16;
DavidEGrayson 37:23000a47ed2b 28 //entry->sin = reckoner.sin >> 16;
DavidEGrayson 37:23000a47ed2b 29 entry->x = reckoner.x >> 16;
DavidEGrayson 37:23000a47ed2b 30 entry->y = reckoner.y >> 16;
DavidEGrayson 37:23000a47ed2b 31 }
DavidEGrayson 37:23000a47ed2b 32
DavidEGrayson 37:23000a47ed2b 33 void Logger::dump()
DavidEGrayson 37:23000a47ed2b 34 {
DavidEGrayson 37:23000a47ed2b 35 pc.printf("Log dump start\r\n");
DavidEGrayson 37:23000a47ed2b 36 for(int32_t i = 0; i < entryIndex; i++)
DavidEGrayson 37:23000a47ed2b 37 {
DavidEGrayson 37:23000a47ed2b 38 LogEntry * entry = &entries[i];
DavidEGrayson 37:23000a47ed2b 39 pc.printf("%d,%d\r\n", entry->x, entry->y);
DavidEGrayson 37:23000a47ed2b 40 }
DavidEGrayson 37:23000a47ed2b 41 pc.printf("Log dump end\r\n");
DavidEGrayson 37:23000a47ed2b 42 }