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: mbed DebounceIn
Revision 5:800c4abff49c, committed 2020-03-02
- Comitter:
- maazshaikh
- Date:
- Mon Mar 02 08:46:30 2020 +0000
- Parent:
- 4:ee3a74a290be
- Commit message:
- loll
Changed in this revision
| main_copy.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main_copy.cpp Sat Feb 29 12:27:43 2020 +0000
+++ b/main_copy.cpp Mon Mar 02 08:46:30 2020 +0000
@@ -3,14 +3,17 @@
// must import Cookbook Debounce library into project
// URL: http://mbed.org/users/AjK/libraries/DebounceIn/lky9pc
+Serial pc(USBTX, USBRX);
-DigitalOut myled1 (p11);
-DigitalOut myled2 (p12);
-DigitalOut myled3 (p13);
+DigitalOut myled1 (p12);
+DigitalOut myled2 (p13);
+DigitalOut myled3 (p14);
+DigitalOut myled4 (p15);
DebounceIn pb1(p8);
DebounceIn pb2(p9);
DebounceIn pb3(p10);
+DebounceIn pb4(p11);
int count = 0;
int order = 0;
@@ -19,12 +22,17 @@
int old_pb1 = 0;
int old_pb2 = 0;
int old_pb3 = 0;
+int old_pb4 = 0;
int new_pb1;
int new_pb2;
int new_pb3;
+int new_pb4;
+int level=1;
void level1();
+void level2();
+int tries = 0;
// SPST Pushbutton count demo using internal PullUp function
// no external PullUp resistor needed
@@ -37,9 +45,16 @@
// Use internal pullup for pushbutton
pb1.mode(PullUp);
pb2.mode(PullUp);
+ pb3.mode(PullUp);
+ pb4.mode(PullUp);
// Delay for initial pullup to take effect
wait(.001);
- level1();
+ char c = pc.getc();
+ if (c=='l' && tries==0){
+ if (level==1) level1();
+ tries=0;
+ if (level==2) level2();
+}
}
@@ -50,47 +65,131 @@
myled2 = 1; wait(0.5);
myled1 = 1; wait(0.5);
myled3 = 1; wait(0.5);
+ myled4 = 1; wait(0.5);
myled2 = 0; wait(0.5);
myled1 = 0; wait(0.5);
myled3 = 0; wait(0.5);
+ myled4 = 0; wait(0.5);
while(1)
{
new_pb1 = pb1;
new_pb2 = pb2;
new_pb3 = pb3;
+ new_pb4 = pb4;
- if(((new_pb1 == 0) && (old_pb1 == 1)) || ((new_pb2 == 0) && (old_pb2 == 1)) || ((new_pb3 == 0) && (old_pb3 == 1)))
+ if(((new_pb1 == 0) && (old_pb1 == 1)) || ((new_pb2 == 0) && (old_pb2 == 1)) || ((new_pb3 == 0) && (old_pb3 == 1) || ((new_pb4 == 0) && (old_pb4 == 1) )))
{
count++;
switch(order)
{
case 0:
{
- if((new_pb2 == 0) && (old_pb2 == 1))
+ if((new_pb2 == 0) && (old_pb2 == 1) && (tries<4))
{ myled2 = 1; order = 1; reset = 0;}
- else reset = 1;
+ else {reset = 1; tries++;}
} break;
case 1:
{
- if((new_pb1 == 0) && (old_pb1 == 1))
+ if((new_pb1 == 0) && (old_pb1 == 1) && (tries<4))
{ myled1 = 1; order = 2; reset = 0;}
- else reset = 1;
+ else {reset = 1; tries++;}
} break;
case 2:
{
- if((new_pb3 == 0) && (old_pb3 == 1))
- { myled3 = 1; order = 0; wait(3); reset = 1;}
+ if((new_pb3 == 0) && (old_pb3 == 1) && (tries<4))
+ { myled3 = 1; order = 3; reset = 0;}
+ else {reset =1; tries++;}
+ } break;
+ case 3:
+ {
+ if((new_pb4 == 0) && (old_pb4 == 1) && (tries<4))
+ { myled4 = 1; order = 0; level=2; wait(3); reset=2;}
+ else {reset =1; tries++;}
} break;
}
-
+ if (tries<4){
if (reset == 1)
- {order = 0; myled1 = 0; myled2 = 0; myled3 = 0; wait(3); break;}
+ {order = 0; myled1 = 0; myled2 = 0; myled3 = 0; myled4=0; wait(1); break;}
+ if (reset ==2)
+ {order = 0; myled1=0; myled2=0; myled3=0; myled4=0; wait(1); return;}
+ }
+ if (tries>3)
+ {order = 0; myled1=0; myled2=0; myled3=0; myled4=0; wait(1); return;}
+
}
old_pb1 = new_pb1;
old_pb2 = new_pb2;
old_pb3 = new_pb3;
+ old_pb4 = new_pb4;
+ }
+ }
+}
+void level2()
+{
+ while(1)
+ {
+ myled3 = 1; wait(0.25);
+ myled4 = 1; wait(0.25);
+ myled2 = 1; wait(0.25);
+ myled1 = 1; wait(0.25);
+ myled3 = 0; wait(0.25);
+ myled4 = 0; wait(0.25);
+ myled2 = 0; wait(0.25);
+ myled1 = 0; wait(0.25);
+
+ while(1)
+ {
+ new_pb1 = pb1;
+ new_pb2 = pb2;
+ new_pb3 = pb3;
+ new_pb4 = pb4;
+
+ if(((new_pb1 == 0) && (old_pb1 == 1)) || ((new_pb2 == 0) && (old_pb2 == 1)) || ((new_pb3 == 0) && (old_pb3 == 1) || ((new_pb4 == 0) && (old_pb4 == 1) )))
+ {
+ count++;
+ switch(order)
+ {
+ case 0:
+ {
+ if((new_pb3 == 0) && (old_pb3 == 1) && tries<4)
+ { myled3 = 1; order = 1; reset = 0;}
+ else {reset = 1; tries++;}
+ } break;
+ case 1:
+ {
+ if((new_pb4 == 0) && (old_pb4 == 1) && tries<4)
+ { myled4 = 1; order = 2; reset = 0;}
+ else {reset = 1; tries++;}
+ } break;
+ case 2:
+ {
+ if((new_pb2 == 0) && (old_pb2 == 1) && tries<4)
+ { myled2 = 1; order = 3; reset = 0;}
+ else {reset =1; tries++;}
+ } break;
+ case 3:
+ {
+ if((new_pb1 == 0) && (old_pb1 == 1) && tries<4)
+ { myled1 = 1; order = 0; level=1; wait(3); reset=2;}
+ else {reset =1; tries++;}
+ } break;
+ }
+ if (tries<4){
+ if (reset == 1)
+ {order = 0; myled1 = 0; myled2 = 0; myled3 = 0; myled4=0; wait(1); break;}
+ if (reset ==2)
+ {order = 0; myled1=0; myled2=0; myled3=0; myled4=0; wait(1); return;}
+ }
+ if (tries>3)
+ {order = 0; myled1=0; myled2=0; myled3=0; myled4=0; wait(1); return;}
+ }
+
+ old_pb1 = new_pb1;
+ old_pb2 = new_pb2;
+ old_pb3 = new_pb3;
+ old_pb4 = new_pb4;
}
}
}
\ No newline at end of file