This is some awesome robot code
Dependencies: mbed-rtos mbed QEI
Fork of ICRSEurobot13 by
Revision 84:00c799fd10a7, committed 2013-04-16
- 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
--- 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);