BAT / Mbed 2 deprecated BAT_senior_design

Dependencies:   SDFileSystem mbed wave_player mbed-rtos

Fork of BAT_senior_design by Azra Ismail

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }