Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed wave_player mbed-rtos
Fork of BAT_senior_design by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "wave_player.h" 00004 #include "SDFileSystem.h" 00005 00006 PwmOut myservo(p21); 00007 DigitalIn pb1 (p20); 00008 //AnalogIn linpot(p20); 00009 Serial pc(USBTX, USBRX); 00010 //DigitalOut myled(LED1); 00011 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card 00012 AnalogOut DACout(p26); 00013 wave_player waver(&DACout); 00014 00015 // add start, mode, reset buttons 00016 int start = 0; 00017 int submit = 0; 00018 00019 // FUNCTIONS 00020 00021 void moveServoIn(PwmOut servo, DigitalIn pb) 00022 { 00023 while(pb == 1) 00024 //myled = 1; 00025 // rotate 90 degrees one way 00026 for(int i=3; i<=7; i++) { 00027 servo = i/100.0; 00028 wait(0.01); 00029 } 00030 } 00031 00032 void moveServoOut(PwmOut servo, DigitalIn pb) 00033 { 00034 while(pb == 1) 00035 //myled = 0; 00036 for(int i=7; i>3; i--) { 00037 servo = i/100.0; 00038 wait(0.01); 00039 } 00040 } 00041 00042 void playSound(wave_player waver) 00043 { 00044 FILE *wave_file; 00045 wave_file=fopen("/sd/police_siren.wav","r"); 00046 waver.play(wave_file); 00047 fclose(wave_file); 00048 } 00049 00050 00051 // THREADS 00052 00053 00054 void button_thread() 00055 { 00056 00057 } 00058 00059 void submit_thread() 00060 { 00061 00062 } 00063 00064 void start_thread() 00065 { 00066 // read pb_start 00067 // if 1 00068 start == 1; 00069 // else 0 00070 } 00071 00072 int main() 00073 { 00074 // SETUP 00075 // button up: state = 0, button halfway: state = 1; button down: state = 2 00076 int state = 2; 00077 // pull up the pushbutton to prevent bouncing 00078 pb1.mode(PullUp); 00079 wait(.001); 00080 // servo begins at 30 degrees 00081 for(int i=0; i<=3; i++) { 00082 myservo = i/100.0; 00083 wait(0.01); 00084 } 00085 00086 // MAIN THREAD 00087 while(true) { 00088 00089 // start threads for reset, mode, start 00090 Thread t1(start_thread); 00091 00092 // setup SDcard and Speaker 00093 00094 00095 // when started 00096 while (start == 0) {} 00097 Thread t2(button_thread); 00098 Thread t3(submit_thread); 00099 00100 // when submitted 00101 while (submit == 0) {} 00102 00103 00104 // start button threads and submit thread 00105 // if submit close button threads and submit thread 00106 // check result, speaker result 00107 // save results 00108 00109 00110 00111 00112 // Servo code 00113 if (pb1 == 1 && state == 2) { 00114 moveServoIn(myservo, pb1); 00115 state = 1; 00116 } 00117 // rotate 90 degrees other way 00118 if (pb1 == 1 && state == 1) { 00119 moveServoOut(myservo, pb1); 00120 state = 2; 00121 } 00122 00123 // SD card code 00124 00125 // speaker code 00126 00127 // read linear potentiometer 00128 //if (linpot < 0.5) { 00129 //float potval = linpot; 00130 //pc.printf("linear pot: %f\n", potval); 00131 } 00132 }
Generated on Sat Jul 16 2022 08:31:34 by
1.7.2
