/*Program for my roboarm II - this is the part for the RCX More info can be found at http://www.freewebs.com/laurens200/ The RCX brick responds to IR messages sent by the PSP (More about that on my website). Then it performs an action, depending on the value of the IR message. */ int pneumatics = 0; ///////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE == 9 //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_9(){while(true){if(Message () ==9) { if(pneumatics == 0) { OnRev(OUT_A); //if pneumatic hand is open: then close Wait(20); Off(OUT_A); On(OUT_B); Wait(250); Off(OUT_B); pneumatics = 1; // set pneumatic hand to closed } else { OnFwd(OUT_A); //if pneumatic hand is closed: then open Wait(20); Off(OUT_A); On(OUT_B); Wait(250); Off(OUT_B); pneumatics = 0; // set pneumatic hand to open } ClearMessage (); }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==2 /////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_2(){while(true){if(Message () ==2) { OnFwd(OUT_C); // Move the hand up ClearMessage (); Wait(20); Off(OUT_C); }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==10 /////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_10(){while(true){if(Message () ==10) { OnRev(OUT_C); // Move the hand down ClearMessage (); Wait(20); Off(OUT_C); }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==5 send 1001 /////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_5(){while(true){if(Message () ==5) { stop CHECK_IR_6; stop CHECK_IR_7; stop CHECK_IR_8; stop CHECK_IR_1; stop CHECK_IR_4; ClearMessage (); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(10); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(20); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(10); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(10); Wait(30); start CHECK_IR_6; start CHECK_IR_7; start CHECK_IR_8; start CHECK_IR_1; start CHECK_IR_4; }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==6 send 1100/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_6(){while(true){if(Message () ==6) { stop CHECK_IR_5; stop CHECK_IR_7; stop CHECK_IR_8; stop CHECK_IR_1; stop CHECK_IR_4; ClearMessage (); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(20); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(20); Wait(30); start CHECK_IR_5; start CHECK_IR_7; start CHECK_IR_8; start CHECK_IR_1; start CHECK_IR_4; }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==7 send 1110/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_7(){while(true){if(Message () ==7) { stop CHECK_IR_5; stop CHECK_IR_6; stop CHECK_IR_8; stop CHECK_IR_1; stop CHECK_IR_4; ClearMessage (); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(30); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(10); Wait(30); start CHECK_IR_5; start CHECK_IR_6; start CHECK_IR_8; start CHECK_IR_1; start CHECK_IR_4; }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==8 send 1111/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_8(){while(true){if(Message () ==8) { stop CHECK_IR_5; stop CHECK_IR_6; stop CHECK_IR_7; stop CHECK_IR_1; stop CHECK_IR_4; ClearMessage (); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(40); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(30); start CHECK_IR_5; start CHECK_IR_6; start CHECK_IR_7; start CHECK_IR_1; start CHECK_IR_4; }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==1 send 1011/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_1(){while(true){if(Message () ==1) { stop CHECK_IR_5; stop CHECK_IR_6; stop CHECK_IR_7; stop CHECK_IR_8; stop CHECK_IR_4; ClearMessage (); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(10); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(10); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(20); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(30); start CHECK_IR_5; start CHECK_IR_6; start CHECK_IR_7; start CHECK_IR_8; start CHECK_IR_4; }}} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////IF MESSAGE ==4 1101/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// task CHECK_IR_4(){while(true){if(Message () ==4) { Off(OUT_C); stop CHECK_IR_5; stop CHECK_IR_6; Off(OUT_C); stop CHECK_IR_7; stop CHECK_IR_8; stop CHECK_IR_1; Off(OUT_C); stop CHECK_IR_10; Off(OUT_C); ClearMessage (); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(20); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(10); SetSensor (SENSOR_3, SENSOR_LIGHT); Wait(10); SetSensor (SENSOR_3, SENSOR_TOUCH); Wait(30); start CHECK_IR_5; start CHECK_IR_6; start CHECK_IR_7; start CHECK_IR_8; start CHECK_IR_1; start CHECK_IR_10; }}} task main() { ClearMessage (); start CHECK_IR_9; start CHECK_IR_2; start CHECK_IR_4; start CHECK_IR_5; start CHECK_IR_6; start CHECK_IR_7; start CHECK_IR_8; start CHECK_IR_1; start CHECK_IR_10; while(true) { } }