Wirelessly controlled robot through Xbee
Dependencies: 4DGL-uLCD-SE Motordriver SDFileSystem mbed-rtos mbed wave_player
Fork of XBee_read by
Revision 1:9ec68db5fe52, committed 2016-11-04
- Comitter:
- etorres31
- Date:
- Fri Nov 04 16:25:35 2016 +0000
- Parent:
- 0:2eaf86314aea
- Commit message:
- Xbee robot code;
Changed in this revision
--- /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