Bluetooth Controlled Robot with Audio Feedback and Variable Speed Control
Dependencies: Motor SDFileSystem mbed wave_player
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 #include "wave_player.h" 00004 #include "Motor.h" 00005 00006 DigitalOut led1(LED1); 00007 DigitalOut led2(LED2); 00008 DigitalOut led3(LED3); 00009 DigitalOut led4(LED4); 00010 00011 Serial blue(p28,p27); 00012 00013 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card 00014 AnalogOut DACout(p18); 00015 wave_player waver(&DACout); 00016 FILE *wave_file; 00017 00018 Motor A(p21, p20, p19); //pwm, inB, inA 00019 Motor B(p22, p17, p16); //pwm, inA, inB 00020 float speed = 0.5f; 00021 float speed1 = 0.25f; 00022 float speed2 = 0.50f; 00023 float speed3 = 0.75f; 00024 float speed4 = 1.0f; 00025 00026 int main() 00027 { 00028 char bnum=0; 00029 char bhit=0; 00030 while(1) { 00031 if (blue.getc()=='!') { 00032 if (blue.getc()=='B') { //button data packet 00033 bnum = blue.getc(); //button number 00034 bhit = blue.getc(); //1=hit, 0=release 00035 if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK? 00036 //myled = bnum - '0'; //current button number will appear on LEDs 00037 switch (bnum) { 00038 case '1': //number button 1 00039 if (bhit=='1') { 00040 speed = speed1; 00041 } else { 00042 //add release code here 00043 } 00044 break; 00045 case '2': //number button 2 00046 if (bhit=='1') { 00047 speed = speed2; 00048 } else { 00049 //add release code here 00050 } 00051 break; 00052 case '3': //number button 3 00053 if (bhit=='1') { 00054 speed = speed3; 00055 } else { 00056 //add release code here 00057 } 00058 break; 00059 case '4': //number button 4 00060 if (bhit=='1') { 00061 speed = speed4; 00062 } else { 00063 //add release code here 00064 } 00065 break; 00066 case '5': //button 5 up arrow 00067 if (bhit=='1') { 00068 led1=!led1; 00069 A.speed(speed); 00070 B.speed(speed); 00071 wave_file=fopen("/sd/upbeep.wav","r"); 00072 waver.play(wave_file); 00073 fclose(wave_file); 00074 } else { 00075 led1=!led1; 00076 A.speed(0.0f); 00077 B.speed(0.0f); 00078 } 00079 break; 00080 case '6': //button 6 down arrow 00081 if (bhit=='1') { 00082 A.speed(-speed); 00083 B.speed(-speed); 00084 wave_file=fopen("/sd/downbeep.wav","r"); 00085 waver.play(wave_file); 00086 fclose(wave_file); 00087 } else { 00088 led2=!led2; 00089 A.speed(0.0f); 00090 B.speed(0.0f); 00091 } 00092 break; 00093 case '7': //button 7 left arrow 00094 if (bhit=='1') { 00095 A.speed(speed); 00096 B.speed(-speed); 00097 wave_file=fopen("/sd/leftbeep.wav","r"); 00098 waver.play(wave_file); 00099 fclose(wave_file); 00100 } else { 00101 led3=!led3; 00102 A.speed(0.0f); 00103 B.speed(0.0f); 00104 } 00105 break; 00106 case '8': //button 8 right arrow 00107 if (bhit=='1') { 00108 A.speed(-speed); 00109 B.speed(speed); 00110 wave_file=fopen("/sd/rightbeep.wav","r"); 00111 waver.play(wave_file); 00112 fclose(wave_file); 00113 } else { 00114 led4=!led4; 00115 A.speed(0.0f); 00116 B.speed(0.0f); 00117 } 00118 break; 00119 default: 00120 break; 00121 } 00122 } 00123 } 00124 } 00125 } 00126 }
Generated on Sat Sep 24 2022 04:53:50 by 1.7.2