This is some awesome robot code

Dependencies:   mbed-rtos mbed QEI

Fork of ICRSEurobot13 by Thomas Branch

Files at this revision

API Documentation at this revision

Comitter:
madcowswe
Date:
Tue Apr 16 10:05:58 2013 +0000
Parent:
83:223186cd7531
Child:
85:b0858346d838
Commit message:
90s timer and armlock

Changed in this revision

Processes/AI/ai.cpp Show annotated file Show diff for this revision Revisions of this file
globals.h 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
--- a/Processes/AI/ai.cpp	Mon Apr 15 22:28:07 2013 +0000
+++ b/Processes/AI/ai.cpp	Tue Apr 16 10:05:58 2013 +0000
@@ -129,7 +129,7 @@
         if(layer_to_push == top_layer)
         {
             ColourEnum colour_read = c_upper.getColour();
-            if (colour_read==own_colour)
+            if ((colour_read==own_colour) && MotorControl::motorsenabled)
             {
                 arm::upper_arm.go_down();
                 top_arm_up_timer.start(1200);
@@ -138,7 +138,7 @@
         else
         {
             ColourEnum colour_read = c_lower.getColour();
-            if (colour_read==own_colour || i==5 || i==7 || i==8 || i==10/*|| colour_read==WHITE*/)
+            if ((colour_read==own_colour || i==5 || i==7 || i==8 || i==10/*|| colour_read==WHITE*/) && MotorControl::motorsenabled)
             {
                 arm::lower_arm.go_down();
                 bottom_arm_up_timer.start(1200);
@@ -227,22 +227,25 @@
         switch(action[i])
         {
             case top_push_colour:
-                if (c_upper.getColour()==own_colour)
+                if ((c_upper.getColour()==own_colour) && MotorControl::motorsenabled)
                 {
                     arm::upper_arm.go_down();
                     top_arm_up_timer.start(1200);
                 }
             break;
             case bot_push_colour:
-                if (c_lower.getColour()==own_colour)
+                if ((c_lower.getColour()==own_colour) && MotorControl::motorsenabled)
                 {
                     arm::lower_arm.go_down();
                     bottom_arm_up_timer.start(1200);
                 }
             break;
             case bot_push_white:
-                arm::lower_arm.go_down();
-                bottom_arm_up_timer.start(1200);
+                if (MotorControl::motorsenabled)
+                {
+                    arm::lower_arm.go_down();
+                    bottom_arm_up_timer.start(1200);
+                }
             break;            
         }
         
--- a/globals.h	Mon Apr 15 22:28:07 2013 +0000
+++ b/globals.h	Tue Apr 16 10:05:58 2013 +0000
@@ -85,6 +85,8 @@
 
 const PinName P_START_CORD = p17;
 
+const PinName P_BALLOON = p8;
+
 
 
 //a type which is a pointer to a rtos thread function
--- a/main.cpp	Mon Apr 15 22:28:07 2013 +0000
+++ b/main.cpp	Tue Apr 16 10:05:58 2013 +0000
@@ -28,6 +28,13 @@
 void printingtestthread2(void const*);
 void feedbacktest();
 
+DigitalOut *balloon_ptr;
+
+void timeisup_isr(){
+    MotorControl::motorsenabled = 0;
+    *balloon_ptr = 0;
+}
+
 int main()
 {
 
@@ -82,12 +89,22 @@
 
     Thread printingThread(Printing::printingloop, NULL, osPriorityLow, 2048);
     
+    //worry about starting
     DigitalIn startcord(P_START_CORD);
     startcord.mode(PullUp);
     while(!startcord)
         Thread::wait(50);
+        
+    //worry about stopping
+    DigitalOut balloon(P_BALLOON);
+    balloon = 1;
+    balloon_ptr = &balloon;
+    Timeout timeout_90s;
+    timeout_90s.attach(timeisup_isr, 90);
+    
     aithread.signal_set(0x2); //Tell AI thread that its time to go
     
+    
     measureCPUidle(); //repurpose thread for idle measurement
     /*
     MotorControl::set_omegacmd(0);