Bluetooth Controlled Robot with Audio Feedback and Variable Speed Control
Dependencies: Motor SDFileSystem mbed wave_player
main.cpp
- Committer:
- iemretep
- Date:
- 2017-03-09
- Revision:
- 0:5b3fe01b3a0e
File content as of revision 0:5b3fe01b3a0e:
#include "mbed.h" #include "SDFileSystem.h" #include "wave_player.h" #include "Motor.h" DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); Serial blue(p28,p27); SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card AnalogOut DACout(p18); wave_player waver(&DACout); FILE *wave_file; Motor A(p21, p20, p19); //pwm, inB, inA Motor B(p22, p17, p16); //pwm, inA, inB float speed = 0.5f; float speed1 = 0.25f; float speed2 = 0.50f; float speed3 = 0.75f; float speed4 = 1.0f; int main() { char bnum=0; char bhit=0; while(1) { if (blue.getc()=='!') { if (blue.getc()=='B') { //button data packet bnum = blue.getc(); //button number bhit = blue.getc(); //1=hit, 0=release if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK? //myled = bnum - '0'; //current button number will appear on LEDs switch (bnum) { case '1': //number button 1 if (bhit=='1') { speed = speed1; } else { //add release code here } break; case '2': //number button 2 if (bhit=='1') { speed = speed2; } else { //add release code here } break; case '3': //number button 3 if (bhit=='1') { speed = speed3; } else { //add release code here } break; case '4': //number button 4 if (bhit=='1') { speed = speed4; } else { //add release code here } break; case '5': //button 5 up arrow if (bhit=='1') { led1=!led1; A.speed(speed); B.speed(speed); wave_file=fopen("/sd/upbeep.wav","r"); waver.play(wave_file); fclose(wave_file); } else { led1=!led1; A.speed(0.0f); B.speed(0.0f); } break; case '6': //button 6 down arrow if (bhit=='1') { A.speed(-speed); B.speed(-speed); wave_file=fopen("/sd/downbeep.wav","r"); waver.play(wave_file); fclose(wave_file); } else { led2=!led2; A.speed(0.0f); B.speed(0.0f); } break; case '7': //button 7 left arrow if (bhit=='1') { A.speed(speed); B.speed(-speed); wave_file=fopen("/sd/leftbeep.wav","r"); waver.play(wave_file); fclose(wave_file); } else { led3=!led3; A.speed(0.0f); B.speed(0.0f); } break; case '8': //button 8 right arrow if (bhit=='1') { A.speed(-speed); B.speed(speed); wave_file=fopen("/sd/rightbeep.wav","r"); waver.play(wave_file); fclose(wave_file); } else { led4=!led4; A.speed(0.0f); B.speed(0.0f); } break; default: break; } } } } } }