Mini Design Project demonstrating a Bluetooth Controlled Robot
Dependencies: Motor WavePlayer_HelloWorld4180 mbed
main.cpp
- Committer:
- jlogreira3
- Date:
- 2016-03-15
- Revision:
- 0:a4708667f84e
File content as of revision 0:a4708667f84e:
#include "mbed.h" #include "wave_player.h" #include "SDFileSystem.h" #include "Motor.h" #include "RGBLed.h" Motor motorA(p26, p11, p12); // pwm, fwd, rev Motor motorB(p25, p13, p14); // pwm, fwd, rev // Setup RGB led using PWM pins and class RGBLed myRGBled(p22,p23,p24); //red, green, blue PWM pins // Setup to play wav file from SD Card AnalogOut DACout(p18); wave_player waver(&DACout); SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card // Setup for bluetooth Serial blue(p28,p27); BusOut myled(LED1,LED2,LED3,LED4); //also setting any unused analog input pins to digital outputs reduces A/D noise a bit //see http://mbed.org/users/chris/notebook/Getting-best-ADC-performance/ DigitalOut P16(p16); DigitalOut P17(p17); DigitalOut P19(p19); DigitalOut P20(p20); void playSound(char * wav) { // need to change code to use threads to play the wav file while avoiding disrupting continuous code flow // open wav file FILE *wave_file; wave_file = fopen(wav,"r"); // play wav file waver.play(wave_file); // close wav file fclose(wave_file); } int main() { float motorSpeed = 0.0; char bnum = 0; char bhit = 0; while(1) { motorA.speed(motorSpeed); motorB.speed(motorSpeed); 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 - '1'; //current button number will appear on LEDs switch (bnum) { case '1': //number button 1 if (bhit=='1') { //add hit code here motorSpeed += 0.2; // speed up myRGBled.write(0.0,1.0,0.0); //green } else { //add release code here } break; case '2': //number button 2 if (bhit=='1') { //add hit code here } else { //add release code here motorSpeed -= 0.2; // slow down myRGBled.write(0.0,0.0,1.0); //blue } break; case '3': //number button 3 if (bhit=='1') { //add hit code here } else { //add release code here motorSpeed = 0.0; myRGBled.write(1.0,0.0,0.0); //red } break; case '4': //number button 4 if (bhit=='1') { //add hit code here myRGBled.write(0.5,0.5,0.5); //white } else { //add release code here playSound("/sd/myWavFiles/CarHornHonk.wav"); } break; case '5': //button 5 up arrow if (bhit=='1') { //add hit code here motorSpeed = 0.5; // speed up myRGBled.write(0.0,1.0,1.0); // teal } else { //add release code here } break; case '6': //button 6 down arrow if (bhit=='1') { //add hit code here motorSpeed = -0.5; // speed up myRGBled.write(1.0,0.1,0.0); //orange } else { //add release code here } break; case '7': //button 7 left arrow if (bhit=='1') { //add hit code here myRGBled.write(0.3,0.0,0.6); // purple motorA.speed(-1.0); motorB.speed(1.0); wait(1); } else { //add release code here } break; case '8': //button 8 right arrow if (bhit=='1') { //add hit code here myRGBled.write(1.0,0.0,0.2); // pink motorA.speed(1.0); motorB.speed(-1.0); wait(1); } else { //add release code here } break; default: break; } } } } } }