![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Final Project
Dependencies: mbed mbed-rtos Motor
Revision 0:24e231906adc, committed 2020-04-26
- Comitter:
- johnnykang0905
- Date:
- Sun Apr 26 18:19:47 2020 +0000
- Commit message:
- Written by Eduard Shuvaev
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Motor.lib Sun Apr 26 18:19:47 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/Motor/#f265e441bcd9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Apr 26 18:19:47 2020 +0000 @@ -0,0 +1,152 @@ +#include "mbed.h" +#include "Motor.h" +#include "rtos.h" + + +int count = 0; +int status = 0; + +Serial blue(p28,p27); +Motor m1(p25, p7, p8); // pwm, fwd, rev +Motor m2(p26, p5, p6); // pwm, fwd, rev + + + +// IR reciever connected to pin 14 +RawSerial device(p13, p14); + + +//speaker +PwmOut speaker (p21); + +// LED inctating and testing functionality +DigitalOut myled1(LED1); +DigitalOut myled2(LED2); +DigitalOut myled3(LED3); +DigitalOut myled4(LED4); + + +// RC control using Bluetooth and BlueFruit App +void bluetooth_thread(void const *args) +{ + while(1) { + char bnum=0; + char bhit=0; + if(status == 0) + { 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? + // for case 1 - 4 (button 1 - 4) could be added additional functionality + switch (bnum) { + case '5': //button 5 (FORWARD) + if (bhit=='1') { + m1.speed(0.5); + m2.speed(0.55); + } else { + m1.speed(0.0); + m2.speed(0.0); + } + break; + case '6': //button 6 (REVERSE) + if (bhit=='1') { + m1.speed(-0.5); + m2.speed(-0.54); + } else { + m1.speed(0.0); + m2.speed(0.0); + } + break; + case '7': //button 7 (LEFT) + if (bhit=='1') { + m1.speed(-0.5); + m2.speed(0.5); + } else { + m1.speed(0.0); + m2.speed(0.0); + } + break; + case '8': //button 8 (RIGHT) + if (bhit=='1') { + m1.speed(0.5); + m2.speed(-0.54); + } else { + m1.speed(0.0); + m2.speed(0.0); + } + break; + default: + break; + } + } + } + } + } + + // LED 4 blinking to indicate that robot is shot and could not move + else if (status == 1) + { + myled4 = !myled4; + m1.speed(0.0); + m2.speed(0.0); + + } + + Thread::wait(200); + + } +} + +// play sound and blinking +void blink_sound(void const *args) { + + while (1){ + + if (status == 1) + { + myled1 = !myled1; + speaker =0.9; //90% duty cycle - max volume + Thread::wait(700); + speaker=0.0; // turn off audio + } + + + Thread::wait(500); + } + +} + + +int main() +{ + + Thread thread1(bluetooth_thread); + Thread thread2(blink_sound); + device.baud(2400); + speaker.period(1.0/350.0); // 350hz period + + while(1) { + + + if(device.readable()) + { + device.getc(); + myled2 = 1; + status = 1; + wait(1); + myled2 = 0; + device.putc(0); + } + + // after few cycles the robot rebooting + if(device.readable() == 0) + { + status = 0; + } + + Thread::wait(100); + } + +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Sun Apr 26 18:19:47 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/teams/ST/code/mbed-rtos/#83895f30f8f2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Apr 26 18:19:47 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file