ECE434 Project Whack-A-Mole

Team members: Craig McGee Jr

Grading Template
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

 09 Executive Summary 09 Packaging 09 Installation Instructions 09 User Instructions 09 Highlights 09 Theory of Operation 09 Work Breakdown 09 Future Work/Conclusions 09 Hackster.io 09 Demo/Poster 00 Not Late

Score: 90/100

Executive Summary
Hello all and welcome to the elinux about my project! My project is Whack-A-Mole game. In this game you use the Blynk App as the thing you hit the "moles" with and the lights randomly lighting up are the "moles." Above you can seen the Blynk app as well as the lights that turn on randomly to represent the "moles" randomly coming out of their holes. I hope you guys enjoy. Hit the light corresponding to the light that has randomly flashed on before that light flashes off to get points. Good luck!

Packaging
This is the hardware setup for the Whack-A-Mole Project. You can see that there are 4 LED lights that are connected to P9_13, P9_14, P9_15, and P9_16 gpio pins.

Installation Instructions
Give step by step instructions on how to install your project.


 * Obtain the code from GitHub: https://github.com/mcgeeca/Whack-A-Mole-Project
 * Install the Blynk App on the Apple Store or Google Play Store
 * Create a new project and name it "Whack-A-Mole" or something like that and choose hardware option Generic Board. Make sure the connection type is "WiFi" and click "Create Project".
 * Click on the screen and add 4 buttons to the screen and 1 value display.
 * The buttons should be connected to Virtual 0, 1, 2, and 3. Each button will be represents one of the lights you've connected on the breadboard and the BeagleBone.
 * The value display should be connected to Virtual 4. This is the display used to show the score
 * In command line run ./install.sh
 * In command line type "source setup.sh" without the quotes
 * Then run ./Whack-A-Mole.py

User Instructions
Once everything is installed simply click the buttons corresponding to the different lights. Click the button corresponding to the light when it turns on to turn that light off and receive a point. Get as many as you can before the 30 seconds of time is up. Look at display to see what your score is. Note that if you play it once and you want to play it again you must rerun the program. The display will have the previous score still displayed but when you turn a light off before it goes off on it's own the score will start back up from 0.

Highlights
Click on the link to see a video demonstration of the project

Whack-A-Mole Demonstration

Work Breakdown
The major tasks that were done were:


 * Creating Blynk Setup
 * Creating Countdown Sequence
 * Creating Random Light Generator To Toggle Lights
 * Importing And Using Multiprocessing To Run Blynk App And Countdown Sequence Along With Random Light Generator In Parallel

Future Work
Some other things that could be added:
 * Potentially a display that is used to show the countdown as it is happening.
 * Adding sounds when a light turns on and when the user turns it off
 * Current system doesn't check to see if user clicks button during countdown so if they do they will get points that they shouldn't get so someone could add an error checker for that.
 * Someone could add a website that shows the top 5 highest scores and update that based on what people were to get.

Conclusions
After my first project went south I had about 2 days to complete this. It wasn't easy but it is satisfying to see it working as effectively as it is. I had a blast doing this assignment and enjoyed the class as a whole. I look forward to seeing what others may do with the project!