Code for our FYDP -only one IMU works right now -RTOS is working
Diff: bt_shell/shell/remotecontrol_fnt.h
- Revision:
- 0:964eb6a2ef00
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bt_shell/shell/remotecontrol_fnt.h Wed Mar 18 22:23:48 2015 +0000 @@ -0,0 +1,103 @@ +void remotecontrol_fnt(int argc, char **argv) +{ + int speed = 40; + + bt.lock(); + bt.printf("Remote Control Mode\r\n"); + bt.printf("Controls:\r\n"); + bt.printf(" wasd & qezc to move\r\n"); + bt.printf(" r/f for speed +/-\r\n"); + bt.printf(" enter key to exit\r\n"); + bt.unlock(); + + if(argc == 2){ + speed = tinysh_atoxi(argv[1]); + if( speed <= 0 || speed > 100) + speed = 100; + } + + int Lspeed = 0; + int Rspeed = 0; + + char c = 0; + + while(c != '\r' && c != '\n') + { + bt.lock(); + + if(bt.readable()) + { + c = bt.getc(); + bt.unlock(); + + switch ( c ) { + case 'w': + Lspeed = speed; + Rspeed = speed; + break; + case 'a': + Lspeed = -speed; + Rspeed = speed; + break; + case 's': + Lspeed = -speed; + Rspeed = -speed; + break; + case 'x': + Lspeed = -speed; + Rspeed = -speed; + break; + case 'd': + Lspeed = speed; + Rspeed = -speed; + break; + case 'q': + Lspeed = 0; + Rspeed = speed; + break; + case 'e': + Lspeed = speed; + Rspeed = 0; + break; + case 'c': + Lspeed = -speed; + Rspeed = 0; + break; + case 'z': + Lspeed = 0; + Rspeed = -speed; + break; + case 'r': + speed += 10; + if(speed > 100) + speed = 100; + bt.lock(); + bt.printf("speed = %d\r\n", speed); + bt.unlock(); + Lspeed = 0; + Rspeed = 0; + break; + case 'f': + speed -= 10; + if(speed < 0) + speed = 0; + bt.lock(); + bt.printf("speed = %d\r\n", speed); + bt.unlock(); + Lspeed = 0; + Rspeed = 0; + break; + default: + Lspeed = 0; + Rspeed = 0; + break; + } + + moveMotors(Lspeed,Rspeed,100); + + }else + bt.unlock(); + + Thread::wait(25); + } +} \ No newline at end of file