A simple Whack-a-Mole game using LEDs and pushbuttons
Dependencies: DebounceIn TextLCD mbed-rtos mbed
main.cpp
- Committer:
- tdouglas6
- Date:
- 2014-10-21
- Revision:
- 0:a4e667868bd4
File content as of revision 0:a4e667868bd4:
#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); } }