Basic funcitonality
Dependencies: mbed mbed-rtos SevenSegmentSerial HC_SR04_Ultrasonic_Library
Diff: main.cpp
- Revision:
- 1:28e137ae5af7
- Parent:
- 0:0747159bf07d
- Child:
- 2:8c29e1aaaff0
--- a/main.cpp Fri Apr 16 20:51:22 2021 +0000 +++ b/main.cpp Mon Apr 19 18:06:59 2021 +0000 @@ -9,16 +9,22 @@ #include "mbed.h" #include "ultrasonic.h" +#include "rtos.h" +Thread thread1; Serial pc(USBTX,USBRX); DigitalOut led0(p5); DigitalOut led1(p6); DigitalOut led2(p7); +//Ticker sound; +PwmOut speaker(p25); int width[3]; //width of each checkpoint, mm int sensitivity = 5; //sensitivity, adjust with testing, mm int total_laps = 3; int current_lap = 0; +int frequency = 500; +int i = 500; int setup[3] = {1,1,1}; @@ -26,6 +32,13 @@ enum state_type {start,past_start,past_cp1,past_cp2}; state_type track_state = start; +void play_audio() +{ + speaker =0.5; //50% duty cycle - max volume + Thread::wait(3); + speaker=0.0; // turn off audio +} + //executed when crossing starting line void start_line(int distance) { @@ -33,9 +46,9 @@ pc.printf("Setup\n"); pc.printf("%d",distance); width[0] = distance; - setup[0] = !setup[0]; + setup[0] = !setup[0]; } - + if (width[0] - distance >= sensitivity) { pc.printf("Past start line\n"); led0 = 1; @@ -45,6 +58,7 @@ pc.printf("%d\n",current_lap); track_state = past_start; pc.putc('0'); + thread1.start(&play_audio); } } @@ -55,9 +69,9 @@ pc.printf("Setup\n"); pc.printf("%d",distance); width[1] = distance; - setup[1] = !setup[1]; + setup[1] = !setup[1]; } - + pc.printf("Past Checkpoint 1\n"); if (width[1] - distance >= sensitivity) { led1 = 1; @@ -73,9 +87,9 @@ pc.printf("Setup\n"); pc.printf("%d",distance); width[2] = distance; - setup[2] = !setup[2]; + setup[2] = !setup[2]; } - + pc.printf("Past Checkpoint 2\n"); if (width[2] - distance >= sensitivity) { led2 = 1; @@ -88,18 +102,18 @@ ultrasonic sonar1(p17,p18,0.1,0.1,&checkpoint1); //checkpoint 1 ultrasonic sonar2(p21,p22,0.1,0.1,&checkpoint2); //checkpoint 2 -int main() +int main() { + speaker.period(1.0/frequency); // 500hz period sonar0.startUpdates(); sonar1.startUpdates(); sonar2.startUpdates(); - + sonar0.checkDistance(); sonar1.checkDistance(); sonar2.checkDistance(); - while(1) - { + while(1) { switch (track_state) { case start: sonar0.checkDistance(); @@ -118,9 +132,9 @@ pc.putc('9'); while(1) { pc.printf("Race Over"); - wait(0.05); + Thread::wait(0.05); } } - wait(0.05); + Thread::wait(0.05); } } \ No newline at end of file