Mini Design Project demonstrating a Bluetooth Controlled Robot
Dependencies: Motor WavePlayer_HelloWorld4180 mbed
Revision 0:a4708667f84e, committed 2016-03-15
- Comitter:
- jlogreira3
- Date:
- Tue Mar 15 18:20:53 2016 +0000
- Commit message:
- dfgdsfg
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Motor.lib Tue Mar 15 18:20:53 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/Motor/#f265e441bcd9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RGBLed.h Tue Mar 15 18:20:53 2016 +0000 @@ -0,0 +1,27 @@ +#include "mbed.h" + +//Class to control an RGB LED using three PWM pins +class RGBLed +{ +public: + RGBLed(PinName redpin, PinName greenpin, PinName bluepin); + void write(float red,float green, float blue); +private: + PwmOut _redpin; + PwmOut _greenpin; + PwmOut _bluepin; +}; + +RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin) + : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin) +{ + //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker) + _redpin.period(0.0005); +} + +void RGBLed::write(float red,float green, float blue) +{ + _redpin = red; + _greenpin = green; + _bluepin = blue; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WavePlayer_HelloWorld.lib Tue Mar 15 18:20:53 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/jlogreira3/code/WavePlayer_HelloWorld4180/#f27cbf739ab0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Mar 15 18:20:53 2016 +0000 @@ -0,0 +1,147 @@ +#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; + } + } + } + } + } +} + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Mar 15 18:20:53 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/87f2f5183dfb \ No newline at end of file