A simple Whack-a-Mole game using LEDs and pushbuttons

Dependencies:   DebounceIn TextLCD mbed-rtos mbed

Files at this revision

API Documentation at this revision

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

DebounceIn.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
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