Code for our FYDP -only one IMU works right now -RTOS is working

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers remotecontrol_fnt.h Source File

remotecontrol_fnt.h

00001 void remotecontrol_fnt(int argc, char **argv)
00002 {
00003     int speed = 40;
00004     
00005     bt.lock();
00006     bt.printf("Remote Control Mode\r\n");
00007     bt.printf("Controls:\r\n");
00008     bt.printf("     wasd & qezc to move\r\n");
00009     bt.printf("     r/f for speed +/-\r\n");
00010     bt.printf("     enter key to exit\r\n");
00011     bt.unlock();
00012     
00013     if(argc == 2){
00014         speed = tinysh_atoxi(argv[1]);        
00015         if( speed <= 0 || speed > 100)
00016             speed = 100;
00017     }        
00018     
00019     int Lspeed = 0;
00020     int Rspeed = 0;
00021 
00022     char c = 0;
00023     
00024     while(c != '\r' && c != '\n')
00025     {
00026         bt.lock();
00027         
00028         if(bt.readable())
00029         {
00030         c = bt.getc();
00031         bt.unlock();
00032                
00033         switch ( c ) {
00034             case 'w':
00035                 Lspeed = speed;
00036                 Rspeed = speed;            
00037             break;
00038             case 'a':
00039                 Lspeed = -speed;
00040                 Rspeed = speed;
00041             break;
00042             case 's':
00043                 Lspeed = -speed;
00044                 Rspeed = -speed;
00045             break;
00046             case 'x':
00047                 Lspeed = -speed;
00048                 Rspeed = -speed;
00049             break;
00050             case 'd':
00051                 Lspeed = speed;
00052                 Rspeed = -speed;
00053             break;
00054             case 'q':
00055                 Lspeed = 0;
00056                 Rspeed = speed;
00057             break;
00058             case 'e':
00059                 Lspeed = speed;
00060                 Rspeed = 0;
00061             break;      
00062             case 'c':
00063                 Lspeed = -speed;
00064                 Rspeed = 0;
00065             break;       
00066             case 'z':
00067                 Lspeed = 0;
00068                 Rspeed = -speed;
00069             break;        
00070             case 'r':
00071                 speed += 10;
00072                 if(speed > 100)
00073                     speed = 100;
00074                 bt.lock();
00075                 bt.printf("speed = %d\r\n", speed);
00076                 bt.unlock();
00077                 Lspeed = 0;
00078                 Rspeed = 0;
00079             break;  
00080             case 'f':
00081                 speed -= 10;
00082                 if(speed < 0)
00083                     speed = 0;
00084                 bt.lock();
00085                 bt.printf("speed = %d\r\n", speed);      
00086                 bt.unlock();
00087                 Lspeed = 0;
00088                 Rspeed = 0;              
00089             break;         
00090             default:
00091                 Lspeed = 0;
00092                 Rspeed = 0;
00093             break;
00094         }
00095         
00096         moveMotors(Lspeed,Rspeed,100);
00097         
00098         }else
00099             bt.unlock();
00100             
00101         Thread::wait(25);   
00102     }
00103 }