Bluetooth Controlled Robot with Audio Feedback and Variable Speed Control
Dependencies: Motor SDFileSystem mbed wave_player
Diff: main.cpp
- Revision:
- 0:5b3fe01b3a0e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Mar 09 17:22:33 2017 +0000 @@ -0,0 +1,126 @@ +#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; + } + } + } + } + } +} \ No newline at end of file