Fork of original senior design repo
Dependencies: SDFileSystem mbed-rtos mbed wave_player emic2
Fork of BAT_senior_design by
Revision 17:d14bf57f435b, committed 2017-10-27
- Comitter:
- aismail1997
- Date:
- Fri Oct 27 13:34:49 2017 +0000
- Parent:
- 16:08c575082052
- Child:
- 18:ceac47be2e64
- Commit message:
- 6 button threads
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Oct 25 14:35:31 2017 +0000
+++ b/main.cpp Fri Oct 27 13:34:49 2017 +0000
@@ -9,9 +9,18 @@
DigitalIn pb1 (p20);
PwmOut myservo2(p22);
DigitalIn pb2 (p19);
-DigitalOut led1(LED1);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
+PwmOut myservo3(p23);
+DigitalIn pb3 (p18);
+PwmOut myservo4(p24);
+DigitalIn pb4 (p17);
+PwmOut myservo5(p25);
+DigitalIn pb5 (p16);
+PwmOut myservo6(p26);
+DigitalIn pb6 (p15);
+
+//DigitalOut led1(LED1);
+//DigitalOut led3(LED3);
+//DigitalOut led4(LED4);
//AnalogIn linpot(p20);
//Serial pc(USBTX, USBRX);
@@ -20,14 +29,22 @@
//wave_player waver(&DACout);
button button1(myservo, pb1);
button button2(myservo2, pb2);
+button button3(myservo3, pb3);
+button button4(myservo4, pb4);
+button button5(myservo5, pb5);
+button button6(myservo6, pb6);
// INITIALIZE VARIABLES
// add mode, reset buttons
int start = 0;
int submit = 0;
+// Buttons begins in up state
int state = 0;
-int state2 = 0; // Button begins in up state
-///int state2 = 2;
+int state2 = 0;
+int state3 = 0;
+int state4 = 0;
+int state5 = 0;
+int state6 = 0;
int count = 0;
// FUNCTIONS
@@ -43,9 +60,10 @@
// THREADS
// thread for the custom button
+//int count = 0;
+
void button_thread()
{
-
while(true) {
// state 0 - button is up, pb = 0
if (pb1 == 0 && state == 3) {
@@ -69,9 +87,8 @@
}
// state 4 - handle debouncing while button is down
/*if (pb1 = 1 && state == 2) {
-
+ count++;
}*/
-
}
}
@@ -82,29 +99,29 @@
if (pb2 == 0 && state2 == 3) {
// nothing happens here, servo is still
state2 = 0;
- led3 = 0;
- led4 = 0;
+ //led3 = 0;
+ //led4 = 0;
}
// state 1 - button is moving down, pb = 1
if (pb2 == 1 && state2 == 0) {
button2.moveServoIn();
state2 = 1;
- led3 = 0;
- led4 = 1;
+ //led3 = 0;
+ //led4 = 1;
}
// state 2 - button is down, pb = 0
if (pb2 == 0 && state2 == 1) {
// nothing happens here, servo is still
state2 = 2;
- led3 = 1;
- led4 = 0;
+ //led3 = 1;
+ //led4 = 0;
}
// state 3 - button is moving up, pb = 1
if (pb2 == 1 && state2 == 2) {
button2.moveServoOut();
state2 = 3;
- led3 = 1;
- led4 = 1;
+ //led3 = 1;
+ //led4 = 1;
}
// state 4 - handle debouncing while button is down
/*if (pb2 = 1 && state2 == 2) {
@@ -115,6 +132,135 @@
}
}
+// thread for the custom button
+void button3_thread()
+{
+ while(true) {
+ // state 0 - button is up, pb = 0
+ if (pb3 == 0 && state3 == 3) {
+ // nothing happens here, servo is still
+ state3 = 0;
+ }
+ // state 1 - button is moving down, pb = 1
+ if (pb3 == 1 && state3 == 0) {
+ button3.moveServoIn();
+ state3 = 1;
+ }
+ // state 2 - button is down, pb = 0
+ if (pb3 == 0 && state3 == 1) {
+ // nothing happens here, servo is still
+ state3 = 2;
+ }
+ // state 3 - button is moving up, pb = 1
+ if (pb3 == 1 && state3 == 2) {
+ button3.moveServoOut();
+ state3 = 3;
+ }
+ // state 4 - handle debouncing while button is down
+ /*if (pb3 = 1 && state3 == 2) {
+
+ }*/
+
+ }
+}
+
+// thread for the custom button
+void button4_thread()
+{
+ while(true) {
+ // state 0 - button is up, pb = 0
+ if (pb4 == 0 && state4 == 3) {
+ // nothing happens here, servo is still
+ state4 = 0;
+ }
+ // state 1 - button is moving down, pb = 1
+ if (pb4 == 1 && state4 == 0) {
+ button4.moveServoIn();
+ state4 = 1;
+ }
+ // state 2 - button is down, pb = 0
+ if (pb4 == 0 && state4 == 1) {
+ // nothing happens here, servo is still
+ state4 = 2;
+ }
+ // state 3 - button is moving up, pb = 1
+ if (pb4 == 1 && state4 == 2) {
+ button4.moveServoOut();
+ state4 = 3;
+ }
+ // state 4 - handle debouncing while button is down
+ /*if (pb4 = 1 && state4 == 2) {
+
+ }*/
+
+ }
+}
+
+// thread for the custom button
+void button5_thread()
+{
+
+ while(true) {
+ // state 0 - button is up, pb = 0
+ if (pb5 == 0 && state5 == 3) {
+ // nothing happens here, servo is still
+ state5 = 0;
+ }
+ // state 1 - button is moving down, pb = 1
+ if (pb5 == 1 && state5 == 0) {
+ button5.moveServoIn();
+ state5 = 1;
+ }
+ // state 2 - button is down, pb = 0
+ if (pb5 == 0 && state5 == 1) {
+ // nothing happens here, servo is still
+ state5 = 2;
+ }
+ // state 3 - button is moving up, pb = 1
+ if (pb5 == 1 && state5 == 2) {
+ button5.moveServoOut();
+ state5 = 3;
+ }
+ // state 4 - handle debouncing while button is down
+ /*if (pb5 = 1 && state5 == 2) {
+
+ }*/
+
+ }
+}
+
+// thread for the custom button
+void button6_thread()
+{
+ while(true) {
+ // state 0 - button is up, pb = 0
+ if (pb6 == 0 && state6 == 3) {
+ // nothing happens here, servo is still
+ state6 = 0;
+ }
+ // state 1 - button is moving down, pb = 1
+ if (pb6 == 1 && state6 == 0) {
+ button6.moveServoIn();
+ state6 = 1;
+ }
+ // state 2 - button is down, pb = 0
+ if (pb6 == 0 && state6 == 1) {
+ // nothing happens here, servo is still
+ state6 = 2;
+ }
+ // state 3 - button is moving up, pb = 1
+ if (pb6 == 1 && state6 == 2) {
+ button6.moveServoOut();
+ state6 = 3;
+ }
+ // state 4 - handle debouncing while button is down
+ /*if (pb6 = 1 && state6 == 2) {
+
+ }*/
+
+ }
+}
+
void submit_thread()
{
Thread::wait(500); // wait till thread is done
@@ -137,6 +283,10 @@
// pull up the pushbutton to prevent bouncing
pb1.mode(PullUp);
pb2.mode(PullUp);
+ pb3.mode(PullUp);
+ pb4.mode(PullUp);
+ pb5.mode(PullUp);
+ pb6.mode(PullUp);
wait(.001);
// servo begins at 30 degrees
@@ -149,13 +299,41 @@
myservo2 = i/100.0;
wait(0.01);
}
+
+ for(int i=0; i<=3; i++) {
+ myservo3 = i/100.0;
+ wait(0.01);
+ }
+
+ for(int i=0; i<=3; i++) {
+ myservo4 = i/100.0;
+ wait(0.01);
+ }
+
+ for(int i=0; i<=3; i++) {
+ myservo5 = i/100.0;
+ wait(0.01);
+ }
- led1 = 1;
+ for(int i=0; i<=3; i++) {
+ myservo6 = 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);
+ Thread t1(button_thread);
+ Thread t2(button2_thread);
+ Thread t3(button3_thread);
+ Thread t4(button4_thread);
+ Thread t5(button5_thread);
+ Thread t6(button6_thread);
+ t1.start(button_thread);
+ t2.start(button2_thread);
+ t3.start(button3_thread);
+ t4.start(button4_thread);
+ t5.start(button5_thread);
+ t6.start(button6_thread);
// start threads for reset, mode, start
//Thread t1(start_thread);
@@ -185,6 +363,7 @@
//if (linpot < 0.5) {
//float potval = linpot;
//pc.printf("linear pot: %f\n", potval);
+
// MAIN THREAD
while(true) {
Thread::wait(500); // wait till thread is done
