Wirelessly controlled robot through Xbee

Dependencies:   4DGL-uLCD-SE Motordriver SDFileSystem mbed-rtos mbed wave_player

Fork of XBee_read by Alex Louden

Files at this revision

API Documentation at this revision

Comitter:
etorres31
Date:
Fri Nov 04 16:25:35 2016 +0000
Parent:
0:2eaf86314aea
Commit message:
Xbee robot code;

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
Motordriver.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.lib 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
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
wave_player.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Fri Nov 04 16:25:35 2016 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motordriver.lib	Fri Nov 04 16:25:35 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/littlexc/code/Motordriver/#3110b9209d3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SDFileSystem.lib	Fri Nov 04 16:25:35 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/SDFileSystem/#8db0d3b02cec
--- a/main.cpp	Fri Jun 04 10:23:38 2010 +0000
+++ b/main.cpp	Fri Nov 04 16:25:35 2016 +0000
@@ -1,15 +1,84 @@
 #include "mbed.h"
-#include "TextLCD.h"
+#include "uLCD_4DGL.h"
+#include "motordriver.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
 
-Serial xbee1(p9, p10);
+uLCD_4DGL uLCD(p28, p27, p30); // serial tx, serial rx, reset pin;
+
+Serial xbee1(p13,p14);
 DigitalOut rst1(p11);
 
 DigitalOut myled(LED1);
 DigitalOut myled2(LED2);
 
-TextLCD lcd(p16, p15, p14, p17, p18, p19, p20); // rs, rw, e, d0, d1, d2, d3
+Motor  left(p21, p22, p23, 1); 
+Motor right(p26, p25, p24, 1);
+
+SDFileSystem sd(p5, p6, p7, p8, "sd");
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
+int a = 0;
+int f = 0;
+int b = 0;
+int l = 0;
+int r = 0;
+
+void thread1(void const *args) {
+  while (true) {  
+    while (f >0) {
+        FILE *wave_file;
+        wave_file=fopen("/sd/forward.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+        Thread::wait(100);
+    }
+  }
+}
+
+void thread2(void const *args) {
+  while (true) {  
+    while (b >0) {
+        FILE *wave_file;
+        wave_file=fopen("/sd/backward.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+        Thread::wait(100);
+    }
+  }
+}
+
+void thread3(void const *args) {
+  while (true) {  
+    while (l >0) {
+        FILE *wave_file;
+        wave_file=fopen("/sd/left.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+        Thread::wait(100);
+    }
+  }
+}
+
+void thread4(void const *args) {
+  while (true) {  
+    while (r >0) {
+        FILE *wave_file;
+        wave_file=fopen("/sd/right.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+        Thread::wait(100);
+    }
+  }
+}
 
 int main() {
+    Thread t1(thread1);
+    Thread t2(thread2);
+    Thread t3(thread3);
+    Thread t4(thread4);
+
+    uLCD.display_control(PORTRAIT);
     rst1 = 0;   //Set reset pin to 0
     myled = 0;
     myled2= 0;
@@ -17,27 +86,99 @@
     rst1 = 1;   //Set reset pin to 1
     wait_ms(1);
 
-    lcd.printf("starting");
+    uLCD.printf("starting");
     wait(2);
-    lcd.cls();
+    uLCD.cls();
 
-    int a = 0;
+    
     int prev = 0;
-
-    while (1) {
-
+    float base = 0.1;
+    float lSpeed = 0.0;
+    float rSpeed = 0.0;
+        while (1) {
+        //uLCD.printf("wating");
         if(xbee1.readable()){
+            
             prev = a;
             a = xbee1.getc(); //XBee read
             
+            if (a !=0) {
+            switch(a) {
+                case 1 : //forward
+                  //uLCD.cls();
+                  f++;
+                  lSpeed = f*base*-1;
+                  rSpeed = f*base*-1;
+                  break;
+                case 2 : //reverse
+                  b++;
+                  lSpeed = b*base;
+                  rSpeed = b*base;
+                  break;
+                case 3 : //counter clockwise roation
+                  l++;
+                  lSpeed = l*base*-1;
+                  rSpeed = l*base;
+                  break;
+                case 4 : //clockwise rotation
+                  r++;
+                  lSpeed = r*base;
+                  rSpeed = r*base*-1;
+                  break;
+                case 5 : //stop/reset
+                  f = 0;
+                  b = 0;
+                  l = 0;
+                  r = 0;
+                  lSpeed = 0.0;
+                  rSpeed = 0.0;
+                  break;
+                default :
+                  //left.speed(0.0);
+                  //right.speed(0.0);
+            }
+            }
+            //uLCD.printf("move");
+            left.speed(lSpeed);
+            right.speed(rSpeed);
+            /*if (a == 1) {
+                left.speed(-0.7);
+                right.speed(-0.7);
+                
+                wave_file=fopen("/sd/fire.wav","r");
+                waver.play(wave_file);
+                fclose(wave_file);
+            } else if (a == 2) {
+                left.speed(0.7);
+                right.speed(0.7);
+            } else if (a == 3) {
+                left.speed(-0.7);
+                right.speed(0.7);
+            } else if (a == 4) {
+                left.speed(0.7);
+                right.speed(-0.7);
+            } else if (a == 5) {
+                left.speed(0);
+                right.speed(0); 
+            } */
             if (a != prev){
-                if (a < 10){
-                    lcd.printf("%d", a);
-                }
-                if (a == 254 || a == 253){
-                    lcd.cls();
-                }
+            
+                    uLCD.cls();
+                    //uLCD.text_width(3); //1X size text
+                    //uLCD.text_height(3);
+                    //uLCD.locate(64,64);
+                    //uLCD.printf("%d", a);
+                    uLCD.printf("%f", lSpeed);
+                    uLCD.printf(" ");
+                    uLCD.printf("%d", b);
+                    uLCD.printf(" ");
+                    uLCD.printf("%d", a);
+                    uLCD.printf(" ");
+                    uLCD.printf("%f", rSpeed);
+                
             }
+            
         }
+        a = 0;
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Fri Nov 04 16:25:35 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rtos/#3da5f554d8bf
--- a/mbed.bld	Fri Jun 04 10:23:38 2010 +0000
+++ b/mbed.bld	Fri Nov 04 16:25:35 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/029aa53d7323
+http://mbed.org/users/mbed_official/code/mbed/builds/9bcdf88f62b0
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wave_player.lib	Fri Nov 04 16:25:35 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/sravet/code/wave_player/#acc3e18e77ad