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

Files at this revision

API Documentation at this revision

Comitter:
DavidEGrayson
Date:
Mon Feb 24 01:38:55 2014 +0000
Parent:
16:8eaa5bc2bdb1
Child:
18:b65fbb795396
Commit message:
Created a stub driveHome routine that we need to fill in.

Changed in this revision

buttons.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
test.cpp Show annotated file Show diff for this revision Revisions of this file
test.h Show annotated file Show diff for this revision Revisions of this file
--- a/buttons.cpp	Mon Feb 24 01:26:00 2014 +0000
+++ b/buttons.cpp	Mon Feb 24 01:38:55 2014 +0000
@@ -27,7 +27,7 @@
 {
     button1Montior();
     return button1Debouncer.getState() == state &&
-      button1Debouncer.getTimeInCurrentStateMicroseconds() > BUTTON_DEBOUNCE_TIME;   
+      button1Debouncer.getTimeInCurrentStateMicroseconds() > BUTTON_DEBOUNCE_TIME;
 }
 
 bool button1DefinitelyPressed()
--- a/main.cpp	Mon Feb 24 01:26:00 2014 +0000
+++ b/main.cpp	Mon Feb 24 01:38:55 2014 +0000
@@ -23,7 +23,8 @@
     //testEncoders();
     //testLineSensors();
     //testReckoner();
-    testButtons();
+    //testButtons();
+    testDriveHome();
 
     while(1)
     {
@@ -31,6 +32,15 @@
     }
 }
 
+void __attribute__((noreturn)) driveHome()
+{
+    led1 = 1; led2 = 1; led3 = 0; led4 = 0;
+    while(1)
+    {
+        
+    }
+}
+
 void updateReckonerFromEncoders()
 {
     while(encoderBuffer.hasEvents())
@@ -38,19 +48,19 @@
         PololuEncoderEvent event = encoderBuffer.readEvent();
         switch(event)
         {
-            case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC:
-                reckoner.handleTickLeftForward();
-                break;
-            case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC:
-                reckoner.handleTickLeftBackward();
-                break;
-            case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC:
-                reckoner.handleTickRightForward();
-                break;
-            case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC:
-                reckoner.handleTickRightBackward();
-                break;
-                   
+        case ENCODER_LEFT | POLOLU_ENCODER_EVENT_INC:
+            reckoner.handleTickLeftForward();
+            break;
+        case ENCODER_LEFT | POLOLU_ENCODER_EVENT_DEC:
+            reckoner.handleTickLeftBackward();
+            break;
+        case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_INC:
+            reckoner.handleTickRightForward();
+            break;
+        case ENCODER_RIGHT | POLOLU_ENCODER_EVENT_DEC:
+            reckoner.handleTickRightBackward();
+            break;
         }
     }
 }
+
--- a/test.cpp	Mon Feb 24 01:26:00 2014 +0000
+++ b/test.cpp	Mon Feb 24 01:38:55 2014 +0000
@@ -12,39 +12,26 @@
 #include "reckoner.h"
 #include "buttons.h"
 
-#include <GeneralDebouncer.h>  // tmphax
-extern GeneralDebouncer button1Debouncer;  // tmphax
-
+void __attribute__((noreturn)) driveHome();
 void printBar(const char * name, uint16_t adcResult);
 
-void testDriveHomoe()
+void testDriveHome()
 {
-    led1 = 1;
-    
+    led1 = 1;   
+    while(button1DefinitelyPressed())
+    {
+        updateReckonerFromEncoders();
+    }   
+    driveHome();
 }
 
+
 void testButtons()
 {
     led1 = 1;
     
-    Pacer reportPacer(100000);
-    
-    while(!button1DefinitelyReleased())
-    {
-        if (false && reportPacer.pace())
-        {
-            pc.printf("%1d %11d %11d %11d %11d\r\n",
-              button1Debouncer.firstReportReceived,
-              button1Debouncer.maxUpdateIntervalMicroseconds,
-              button1Debouncer.lastReportTimeMicroseconds,
-              button1Debouncer.spanBeginTimeMicroseconds,
-              button1Debouncer.currentState
-              );
-        }
-    }
-    while(!button1DefinitelyPressed())
-    {
-    }
+    while(!button1DefinitelyReleased());
+    while(!button1DefinitelyPressed());
     led2 = 1;
 
     while(!button1DefinitelyReleased());
--- a/test.h	Mon Feb 24 01:26:00 2014 +0000
+++ b/test.h	Mon Feb 24 01:38:55 2014 +0000
@@ -9,4 +9,5 @@
 
 // These are actually defined in main.h:
 
-void updateReckonerFromEncoders();
\ No newline at end of file
+void updateReckonerFromEncoders();
+void __attribute__((noreturn)) driveHome();
\ No newline at end of file