We wanted to develop a demonstration to show how easy it is to get started building a system and programming using the Octavo Systems OSD3358-SM System-In-Package. What better way than to choose the ultra-tiny and low cost BeagleBoard.org PocketBeagle to program an arcade style competitive game.
The Whac-A-Mole styled game provides a player the opportunity to react quickly to a random LED light up by pressing the corresponding button before the light goes out. If quick enough, the player scores a point. The game provides a "3-2-1" ready signal with two red and one green LED before play begins. The four LEDs (Moles) will then light up randomly. Only one LED will light at a time. The objective of the game is to get the highest possible score in 30 seconds. Play can be one player or many. Turn the potentiometer to increase the difficulty / speed of the LEDs.
Hardware for Whac-A-Mole Game:Building the Whac-A-Mole game gives the opportunity to connect several LED's, push buttons, a potentiometer, buzzer and 4 x 7-segment display to a PocketBeagle building a complete I/O system. By using the external headers on the bottom of PocketBeagle to connect to the Breadboard and populating the internal headers on the top of PocketBeagle with female headers we've created a flexible configuration for connecting to a Breadboard while still being able to add a Click Board for future projects.
Follow the instructions in the Fritzing Diagram to build the Whac-A-Mole Game on a Breadboard.
Go to www.beagleboard.org/pocketbeagle for documentation including the System Reference Manual. The SRM contains full Pin identification for the headers as well as full details of features of the PocketBeagle.
Features of the Whac-A-Mole Game:This game is to press the button corresponding to the light before it goes out. When you do so, your score increases by 1. The objective of the game is to get the highest score possible in 30 seconds.
Game restart switch
- When the switch goes to one, the countdown to the game start will begin
- When the switch goes to zero, the score is cleared
Countdown timer
- The countdown timer will start at 5 and count once per second
- At 2 seconds it will light up GPIO 0.26
- At 1 seconds it will light up GPIO 2.0
- At 0 seconds it will ligth up GPIO 1.16
- There should be a short buzz on the buzzer for each second and a longer tone at zero
Difficulty level
- The voltage on the potentiometer will determine the time between lights
- 1.65V will be 2 second between lights
- 0 V will be 0.25 second between lights
1) Plug the PocketBeagle microUSB into a power source (either a laptop or 5V USB adapter)
2) Wait for the PocketBeagle to boot
3) Make sure the "Game restart switch" is in the off (ie zero) position
4) If you have set the game to auto-run, then proceed to step 5. Otherwise, move to the directory of the Whack-a-Mole game code.
Run: ./run_whack_a_mole.sh
5) Toggle the "Game restart switch" to the on (ie one) position to begin the game
Code Setup:All code is attached in the repository. The code is written in Python.
python whack_a_mole.py
Software Setup:
- Use the latest PocketBeagle image from BeagleBoard.org
- Unzip the software package in a directory
- Change the permissions on the run script:
chmod 755 run_whack_a_mole.sh
Run the game:
./run_whack_a_mole.sh
Please see run_whack_a_mole.sh for instructions to auto-run the game at boot
# ---------------------------------------------------------
# Auto-run script
#
# Add to crontab:
# - In code directory <code>
# 1) mkdir logs
# 2) sudo crontab -e
# 3) @reboot sh <code>/run_whack_a_mole.sh > <code>/logs/cronlog 2>&1
#
# Reboot the PocketBeagle to then auto-run the program
#
# ---------------------------------------------------------
Video Demonstration of Whac-A-Mole GameGetting Started on Octavo Systems OSD3358 DevicesThis project gave us a fun way to exemplify how easy it is to get started on Octavo Systems family of OSD3358 System-In-Package devices. For more information and to get started on your own embedded systems products visit us at https://octavosystems.com/2018/01/17/getting-started
Comments