Dave Lu / FYDP_Final2

Dependencies:   Servo mbed

Fork of FYDP_Final2 by Mark Vandermeulen

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         bt.lock();
00026 
00027         if(bt.readable()) {
00028             c = bt.getc();
00029             bt.unlock();
00030 
00031             switch ( c ) {
00032                 case 'w':
00033                     Lspeed = speed;
00034                     Rspeed = speed;
00035                     break;
00036                 case 'a':
00037                     Lspeed = -speed;
00038                     Rspeed = speed;
00039                     break;
00040                 case 's':
00041                     Lspeed = -speed;
00042                     Rspeed = -speed;
00043                     break;
00044                 case 'x':
00045                     Lspeed = -speed;
00046                     Rspeed = -speed;
00047                     break;
00048                 case 'd':
00049                     Lspeed = speed;
00050                     Rspeed = -speed;
00051                     break;
00052                 case 'q':
00053                     Lspeed = 0;
00054                     Rspeed = speed;
00055                     break;
00056                 case 'e':
00057                     Lspeed = speed;
00058                     Rspeed = 0;
00059                     break;
00060                 case 'c':
00061                     Lspeed = -speed;
00062                     Rspeed = 0;
00063                     break;
00064                 case 'z':
00065                     Lspeed = 0;
00066                     Rspeed = -speed;
00067                     break;
00068                 case 'r':
00069                     speed += 10;
00070                     if(speed > 100)
00071                         speed = 100;
00072                     bt.lock();
00073                     bt.printf("speed = %d\r\n", speed);
00074                     bt.unlock();
00075                     Lspeed = 0;
00076                     Rspeed = 0;
00077                     break;
00078                 case 'f':
00079                     speed -= 10;
00080                     if(speed < 0)
00081                         speed = 0;
00082                     bt.lock();
00083                     bt.printf("speed = %d\r\n", speed);
00084                     bt.unlock();
00085                     Lspeed = 0;
00086                     Rspeed = 0;
00087                     break;
00088                 default:
00089                     Lspeed = 0;
00090                     Rspeed = 0;
00091                     break;
00092             }
00093         } else
00094             bt.unlock();
00095 
00096         Thread::wait(25);
00097     }
00098 }