A simple Whack-a-Mole game using LEDs and pushbuttons
Dependencies: DebounceIn TextLCD mbed-rtos mbed
Revision 0:a4e667868bd4, committed 2014-10-21
- Comitter:
- tdouglas6
- Date:
- Tue Oct 21 00:10:27 2014 +0000
- Commit message:
- A simple Whack-a-Mole game using LEDs and pushbuttons
Changed in this revision
diff -r 000000000000 -r a4e667868bd4 DebounceIn.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DebounceIn.lib Tue Oct 21 00:10:27 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/AjK/code/DebounceIn/#31ae5cfb44a4
diff -r 000000000000 -r a4e667868bd4 TextLCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Tue Oct 21 00:10:27 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
diff -r 000000000000 -r a4e667868bd4 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Oct 21 00:10:27 2014 +0000 @@ -0,0 +1,221 @@ +#include "mbed.h" +#include "rtos.h" +#include "DebounceIn.h" +#include "TextLCD.h" + +TextLCD lcd(p15, p16, p17, p18, p19, p20); + +DigitalOut led1(p11); +DigitalOut led2(p8); +DigitalOut led3(p6); +DigitalOut led4(p10); +DigitalOut led5(p7); +DigitalOut led6(p5); + +DebounceIn pb1(p23); +DebounceIn pb2(p22); +DebounceIn pb3(p21); +DebounceIn pb4(p26); +DebounceIn pb5(p24); +DebounceIn pb6(p25); +int n, c; +int comm; +int counter=0; +int timer=30; + +//*clock counts down from 30 seconds*// +void Countdown(void const *args) { + lcd.cls(); + while(true) { + lcd.cls(); + lcd.printf("Time Left: %d s", timer); + lcd.printf("\nHit Count: %d", counter); + timer--; + Thread::wait(1000); + } +} + +//*randomly selects which LEDs will turn on *// +void Random(void const *args) { + n=0; + + while(true) { + comm=rand()%15; //determines which LEDs will turn on + c=rand()%400; //speed + + if(comm==0) { + led1=1; + led2=0; + led3=0; + led4=0; + led5=0; + led6=0; + wait(0.2); + } else if (comm==1) { + led1=0; + led2=1; + led3=0; + led4=0; + led5=0; + led6=0; + wait(0.2); + } else if (comm==2) { + led1=0; + led2=0; + led3=1; + led4=0; + led5=0; + led6=0; + wait(0.2); + } else if (comm==3) { + led1=0; + led2=0; + led3=0; + led4=1; + led5=0; + led6=0; + wait(0.2); + } else if (comm==4) { + led1=0; + led2=0; + led3=0; + led4=0; + led5=1; + led6=0; + wait(0.2); + } else if (comm==5) { + led1=0; + led2=0; + led3=0; + led4=0; + led5=0; + led6=1; + wait(0.2); + } else if (comm==6) { + led1=0; + led2=1; + led3=0; + led4=0; + led5=0; + led6=1; + wait(0.2); + } else if (comm==7) { + led1=1; + led2=0; + led3=1; + led4=0; + led5=0; + led6=0; + wait(0.2); + } else if (comm==8) { + led1=0; + led2=1; + led3=0; + led4=1; + led5=0; + led6=1; + wait(0.2); + } else if (comm==9) { + led1=0; + led2=0; + led3=1; + led4=1; + led5=0; + led6=1; + wait(0.2); + } else if (comm==10) { + led1=1; + led2=0; + led3=0; + led4=0; + led5=0; + led6=1; + wait(0.2); + } else if (comm==11) { + led1=0; + led2=1; + led3=1; + led4=0; + led5=1; + led6=1; + wait(0.2); + } else if (comm==12) { + led1=1; + led2=1; + led3=1; + led4=1; + led5=1; + led6=1; + wait(0.2); + } else if (comm==13) { + led1=1; + led2=0; + led3=1; + led4=0; + led5=1; + led6=0; + wait(0.2); + } else if (comm==14) { + led1=0; + led2=1; + led3=0; + led4=0; + led5=1; + led6=0; + wait(0.2); + } + n++; + Thread::wait(c); + } +} + +//*if the correct button is pressed while the corresponding LED is on, the hit count will increase*// +void ButtonPress(void const *args) { + while(true) { + if(led1==1&&pb1==0) { + counter++; + } else if(led2==1&&pb2==0) { + counter++; + } else if(led3==1&&pb3==0) { + counter++; + } else if(led4==1&&pb4==0) { + counter++; + } else if(led5==1&&pb5==0) { + counter++; + } else if(led6==1&&pb6==0) { + counter++; + } + Thread::wait(300); + } +} + +int main() { + pb1.mode(PullUp); + pb2.mode(PullUp); + pb3.mode(PullUp); + pb4.mode(PullUp); + pb5.mode(PullUp); + pb6.mode(PullUp); + wait(.001); + + Thread t3(Countdown); + Thread t1(Random); + Thread t2(ButtonPress); + + while(1) { + if(timer==0) { + lcd.cls(); + t1.terminate(); + t2.terminate(); + t3.terminate(); + led1=0; + led2=0; + led3=0; + led4=0; + led5=0; + led6=0; + lcd.printf("Game Over!\nFinal score: %d", counter); + } + Thread::wait(1000); + } +}
diff -r 000000000000 -r a4e667868bd4 mbed-rtos.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Tue Oct 21 00:10:27 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#aaa1b2c7c64c
diff -r 000000000000 -r a4e667868bd4 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Oct 21 00:10:27 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1 \ No newline at end of file