ECE434 Project - Arcade Stacker

Team members: Luke Wendel and Josh Mitterling

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

 Add Extras

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

 * insert picture here *

This project is a recreation of a common arcade game known as Stacker, in which rows of blocks bounce horizontally across the screen. The goal of the game is to stack the moving blocks row by row to the top of the screen, without dropping all of the blocks. We implemented the game using an LED matrix, a BeagleBone Black, and a pushbutton for user input.

What works:

What doesn’t work We could not successfully implement the game on a 64x32 LED matrix from Adafruit. We ran into many bugs and the matrix was not displaying what we expected after hours of debugging, so we opted to use a smaller matrix with an I2C bus.

Conclusion: TODO

Packaging
We do not have any packaging. The BB Black, pushbutton, and LED matrix are bread boarded.

Installation Instructions TODO
Hardware needs:
 * BeagleBone Black
 * breadboard and wires
 * 8x8 LED matrix
 * Push buttons

How to install the project:

Go to our github repository and clone it.


 * Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
 * Include a Makefile for your code if using C.
 * Include any additional packages installed via apt. Include install.sh and setup.sh files.
 * Include kernel mods.
 * If there is extra hardware needed, include links to where it can be obtained.

User Instructions TODO
Once everything is installed, how do you use the program? Consider making it autostart for full credit.

Highlights TODO
Here is where you brag about what your project can do.

Include a YouTube demo the audio description.

Theory of Operation
At initialization, the software connects to the peripheral display device.

This figure visually describes the game flow:

The operation can be represented as a state machine, where the push of a button changes the idle state to an action state. In the action state, the program will determine the blocks stacked, check the game winning condition, and check the game loss condition.

Work Breakdown
We have worked together throughout our undergraduate experience, so it's easy to collaborate and connect our ideas together. Much of the work was done together, but one of us was more responsible for each of the following tasks:


 * Wiring up the 64x32 LED matrix, managing the IO and headers - Josh
 * Developing the initial driver for the 64x32 LED matrix - Luke


 * Developing the Stacker game logic and program flow - Josh
 * Implementing the logic and constructing a template file - Luke

We worked together, by pair programming, to debug the program and get the game to a playable state.

Work not done yet: Migrating the game to the 64x32 LED matrix to be playable.

Future Work
This project is a straightforward example of controlling user input devices to play fun games. More games = more fun, so having a way to select a variety of different games on an LED Matrix, ideally of a larger size and higher resolution, would be very cool.

Conclusions FINISH
This project gave us an opportunity to get even more familiar with the Beagle Bone Black as a microcontroller and embedded linux platform. It required much collaboration, flexibility and debugging.