system project / Mbed 2 deprecated ledgame

Dependencies:   mbed DebounceIn

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "DebounceIn.h"
00003 // must import Cookbook Debounce library into project
00004 // URL: http://mbed.org/users/AjK/libraries/DebounceIn/lky9pc
00005 
00006 
00007 DigitalOut myled3(p11);
00008 DigitalOut myled4(p12);
00009 DigitalOut myled2(p13);
00010 
00011 DebounceIn pb(p8);
00012 DebounceIn pb1(p9);
00013 DebounceIn pb2 (p10);
00014 // SPST Pushbutton count demo using internal PullUp function
00015 // no external PullUp resistor needed
00016 // Pushbutton from P8 to GND.
00017 // Demonstrates need for debounce - will not count more than once per button hit
00018 // This ocuurs on all switches due to mechanical contact bounce
00019 int main()
00020 { 
00021 int count=0;
00022 int old_pb=0;
00023 int new_pb;
00024 int old_pb1=0;
00025 int new_pb1;
00026 int order =0;
00027 int old_pb2=0;
00028 int new_pb2;
00029 
00030 
00031     // Use internal pullup for pushbutton
00032     pb.mode(PullUp);
00033     pb1.mode(PullUp);
00034     // Delay for initial pullup to take effect
00035     wait(.001);
00036  while (1){
00037             myled4=1;
00038             wait(0.5);
00039             myled3=1;
00040             wait(0.5);
00041             myled2=1;
00042             wait(0.5);
00043             myled4=0;
00044             wait(0.5);
00045             myled3=0;
00046             wait(0.5);
00047             myled2=0;
00048             wait(0.5);
00049             
00050       while(1) {
00051         new_pb = pb;
00052         new_pb1 = pb1;
00053         new_pb2= pb2;
00054         if ((new_pb==0) && (old_pb==1)) {
00055             count++;
00056             if (order==1){
00057                  myled3=1;
00058                  order=2;
00059             }
00060             else {
00061                 order=0;
00062                 myled3=0;
00063                 myled4=0;
00064                 myled2=0;
00065                 wait(3);
00066                 break;
00067             }
00068             }
00069         if ((new_pb1==0) && (old_pb1==1)) {
00070             count++;
00071             if (order==0){
00072                  myled4=1;
00073                  order=1;
00074             }
00075             else {
00076                 order=0;
00077                 myled3=0;
00078                 myled4=0;
00079                 wait(3);
00080                 break; 
00081             }
00082             }
00083         if ((new_pb2==0) && (old_pb2==1)) {
00084             count++;
00085             if (order==2){
00086                  myled2=1;
00087                  order=0;
00088                  wait(3);
00089                  myled3=0;
00090                  myled4=0;
00091                  myled2=0;
00092                  wait(3);
00093                  break;
00094             }
00095             else {
00096                 order=0;
00097                 myled3=0;
00098                 myled4=0;
00099                 myled2=0;
00100                 wait(3);
00101                 break; 
00102             }
00103             }
00104         
00105         old_pb = new_pb;
00106         old_pb1 = new_pb1;
00107         old_pb2 = new_pb2;
00108     }      
00109 }
00110 }