Basic funcitonality
Dependencies: mbed mbed-rtos SevenSegmentSerial HC_SR04_Ultrasonic_Library
Diff: main.cpp
- Revision:
- 3:293a771fc470
- Parent:
- 2:8c29e1aaaff0
- Child:
- 4:8588557fbd75
- Child:
- 5:99be83f824b8
--- a/main.cpp Mon Apr 19 18:14:06 2021 +0000 +++ b/main.cpp Mon Apr 19 20:28:11 2021 +0000 @@ -12,19 +12,27 @@ #include "rtos.h" Thread thread1; +Thread thread2; Serial pc(USBTX,USBRX); DigitalOut led0(p5); DigitalOut led1(p6); DigitalOut led2(p7); -//Ticker sound; PwmOut speaker(p25); +DigitalOut rgbRed(p23); +DigitalOut rgbGreen(p24); +DigitalOut rgbCtrl1(p8); +DigitalOut rgbCtrl2(p9); +DigitalOut rgbCtrl3(p10); 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 B4Note = 500; +int E5Note = 659; int i = 500; +bool early_start = 0; +bool start_done = 0; int setup[3] = {1,1,1}; @@ -32,9 +40,46 @@ enum state_type {start,past_start,past_cp1,past_cp2}; state_type track_state = start; +// Race start lights and sound +void start_race() +{ + // 3 + rgbRed = 1; + speaker.period(1.0/B4Note); + speaker =0.5; + rgbCtrl1 = 1; + Thread::wait(500); + speaker = 0; + Thread::wait(500); + // 2 + speaker =0.5; + rgbCtrl2 = 1; + Thread::wait(500); + speaker = 0; + Thread::wait(500); + // 1 + speaker =0.5; + rgbCtrl3 = 1; + Thread::wait(500); + speaker = 0; + Thread::wait(500); + // GO! + rgbRed = 0; + rgbGreen = 1; + start_done = 1; + speaker.period(1.0/E5Note); + speaker =0.5; + Thread::wait(500); + speaker = 0; + rgbCtrl1 = 0; + rgbCtrl2 = 0; + rgbCtrl3 = 0; +} + // Plays bleep for crossing finish line void play_audio() { + speaker.period(1.0/B4Note); // 500hz period speaker =0.5; //50% duty cycle - max volume Thread::wait(150); speaker=0.0; // turn off audio @@ -105,7 +150,6 @@ int main() { - speaker.period(1.0/frequency); // 500hz period sonar0.startUpdates(); sonar1.startUpdates(); sonar2.startUpdates(); @@ -114,6 +158,15 @@ sonar1.checkDistance(); sonar2.checkDistance(); + thread2.start(&start_race); + + while(!start_done) { + if (current_lap) { + // Flash everything red. Play bad sounds. + } + Thread::wait(50); + } + while(1) { switch (track_state) { case start: @@ -133,9 +186,9 @@ pc.putc('9'); while(1) { pc.printf("Race Over"); - Thread::wait(0.05); + Thread::wait(50); } } - Thread::wait(0.05); + Thread::wait(50); } } \ No newline at end of file