Test fork nhi
Dependencies: SDFileSystem mbed-rtos mbed emic2
Fork of BAT_senior_design by
Diff: main.cpp
- Revision:
- 14:581a3b02f4c3
- Parent:
- 13:b80dde24e9bc
- Child:
- 15:7e9308d14faa
--- a/main.cpp Wed Oct 18 14:41:04 2017 +0000
+++ b/main.cpp Sun Oct 22 22:20:11 2017 +0000
@@ -7,13 +7,18 @@
// DEFINE I/O
PwmOut myservo(p21);
DigitalIn pb1 (p20);
+PwmOut myservo2(p22);
+DigitalIn pb2 (p19);
+DigitalOut led1(LED1);
+DigitalOut led2(LED4);
+
//AnalogIn linpot(p20);
-Serial pc(USBTX, USBRX);
-//DigitalOut myled(LED1);
-SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
-AnalogOut DACout(p26);
-wave_player waver(&DACout);
+//Serial pc(USBTX, USBRX);
+//SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
+//AnalogOut DACout(p26);
+//wave_player waver(&DACout);
button button1(myservo, pb1);
+button button2(myservo2, pb2);
// INITIALIZE VARIABLES
// add mode, reset buttons
@@ -21,33 +26,61 @@
int submit = 0;
// FIX THIS: button up: state = 2, button halfway: state = 0; button down: state = 1
int state = 2;
+int state2 = 2;
+int count = 0;
// FUNCTIONS
// play a file on the speaker
-void playSound(wave_player waver)
+/*void playSound(wave_player waver)
{
FILE *wave_file;
wave_file=fopen("/sd/lesson.wav","r");
waver.play(wave_file);
fclose(wave_file);
-}
+}*/
// THREADS
// thread for the custom button
void button_thread()
{
- // button was up and is moving down, move servo in
- if (pb1 == 1 && state == 2) {
- button1.moveServoIn();
- state = 1;
+ while(true) {
+ // button was up and is moving down, move servo in
+ //pc.printf("in button thread");
+ if (pb1 == 1 && state == 2) {
+ button1.moveServoIn();
+ state = 1;
+ led1 = 0;
+ }
+ // button was down and is being pushed again, move servo out
+ else if (pb1 == 1 && state == 1) {
+ button1.moveServoOut();
+ state = 2;
+ led1 = 1;
+ }
+ Thread::wait(100); // wait till thread is done
}
- // button was down and is being pushed again, move servo out
- if (pb1 == 1 && state == 1) {
- button1.moveServoOut();
- state = 2;
+}
+
+void button2_thread()
+{
+ // TODO: Add states
+ while(true) {
+ // button was up and is moving down, move servo in
+ if (pb2 == 1 && state2 == 2) {
+ button2.moveServoIn();
+ state2 = 1;
+ led2 = 0;
+ count = 0;
+ }
+ // button was down and is being pushed again, move servo out
+ else if (pb2 == 1 && state2 == 1) {
+ button2.moveServoOut();
+ state2 = 2;
+ led2 = 1;
+ }
+ Thread::wait(100); // wait till thread is done
}
- Thread::wait(200); // wait till thread is done
}
void submit_thread()
@@ -59,51 +92,69 @@
{
// read pb_start
// if 1
- start == 1;
+ start = 1;
+ //pc.printf("start %d ", start);
// else 0
Thread::wait(500); // wait till thread is done
}
+
int main()
{
// SETUP
// pull up the pushbutton to prevent bouncing
- pb1.mode(PullUp);
- wait(.001);
+ //pb1.mode(PullUp);
+ //pb2.mode(PullUp);
+ //wait(.001);
+
// servo begins at 30 degrees
// replace with a button setup function
for(int i=0; i<=3; i++) {
myservo = i/100.0;
wait(0.01);
}
+ for(int i=0; i<=3; i++) {
+ myservo2 = i/100.0;
+ wait(0.01);
+ }
+ led1 = 1;
+ led2 = 1;
+ Thread t3(button_thread);
+ Thread t4(button2_thread);
+ t3.start(button_thread);
+ t4.start(button2_thread);
+
+ // start threads for reset, mode, start
+ //Thread t1(start_thread);
+ //pc.printf("start thread");
+ //Thread t2(submit_thread);
+ // setup SDcard and Speaker
+
+ // when started
+ //while (start == 0){}
+ //Thread t3(button_thread);
+ //pc.printf("button thread");
+ //Thread t4(button2_thread);
+ //pc.printf("button2 thread");
+
+ //Thread t3(submit_thread);
+
+ // when submitted
+ //while (submit == 0) {}
+
+ // start button threads and submit thread
+ // if submit close button threads and submit thread
+ // check result
+ // play results on speaker
+ // save results
+
+ // read linear potentiometer
+ //if (linpot < 0.5) {
+ //float potval = linpot;
+ //pc.printf("linear pot: %f\n", potval);
// MAIN THREAD
while(true) {
-
- // start threads for reset, mode, start
- Thread t1(start_thread);
- // setup SDcard and Speaker
-
- // when started
- while (start == 0) {}
- Thread t2(button_thread);
-
- //Thread t3(submit_thread);
-
- // when submitted
- //while (submit == 0) {}
-
- // start button threads and submit thread
- // if submit close button threads and submit thread
- // check result
- // play results on speaker
- // save results
-
- // read linear potentiometer
- //if (linpot < 0.5) {
- //float potval = linpot;
- //pc.printf("linear pot: %f\n", potval);
-
- Thread::wait(200); // wait till thread is done
+ Thread::wait(500); // wait till thread is done
}
}
\ No newline at end of file
