We wrote this for controlling our bots in a game designed for the ARM design challenge

Dependencies:   Motor Robo mbed

Revision:
0:2f73cbc3f754
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Oct 27 09:19:15 2013 +0000
@@ -0,0 +1,91 @@
+#include "mbed.h"
+#include "Robo.h"
+
+
+// robot object
+Robo roger(p20, p19, p18,
+           p21, p22, p23,
+           p24, p25, p27, p28, p29, p30);
+
+DigitalOut myled(LED2); 
+DigitalOut left(LED3);  // status left LED 
+DigitalOut right(LED4); // status right LED
+
+// a buzzer when a life decreses
+DigitalOut buzzer(p7);
+
+//the rf receiver Serial object
+Serial rx(p9, p10);
+
+//a rise on this pin reduces a life of the robot
+InterruptIn heart(p6);
+
+/* a wrapper function for roger.devLives
+ * which can be passed as argument to some other funtion
+ */
+void decRoboLives() {
+    roger.decLives();
+    buzzer = 0;
+ }
+
+int main() {
+    char command = 'S';
+    rx.baud(2400);
+    myled = 1; // test led. test: program loaded successfully
+    heart.rise(decRoboLives);
+
+/* main while loop 
+ * 1. wait for instructions
+ * 1. read instruction
+ * 2. do the required action
+ * 3. empty the rx object by reading further
+ * 4. go to 1
+ *  we introduced redundancy in sending the instructions so as to make
+ * sure they really end up being received by the robots. that's the raison d'etre
+ * for step 3.
+ */
+    while(1) {
+        if (rx.readable()) {
+            command = rx.getc();
+            switch(command) {
+                case 'L' :
+                    left = 1;
+                    right = 0;
+                    roger.goLeft();
+                    break;
+                case 'R':
+                    right = 1;
+                    left = 0;
+                    roger.moveRight();
+                    break;
+                case 'M':
+                    roger.goAhead();
+                    break;
+                case 'B':
+                    roger.moveBack();
+                    break;
+                case 'S':
+                    roger.stop();
+                    break;
+                case 'D':
+                    roger.printlcd("Hi");
+                    wait(1);
+                    roger.goLeft();
+                    roger.moveRight();
+                    roger.goLeft();
+                    roger.moveRight();
+                    roger.goAhead();
+                    wait(1);
+                    roger.moveBack();
+                    wait(1);
+                    roger.stop();
+                default:
+                    roger.printlcd("Waiting...      ");
+                    break;
+             
+            }
+            while (rx.readable())
+                command = rx.getc();
+        }
+    }
+ }