Binary Game

by keebie81 in Circuits > Arduino

21742 Views, 161 Favorites, 0 Comments

Binary Game

IMG_2837.jpg

This is a game I created on Tinkercad Circuits to learn binary numbers. https://www.tinkercad.com/things/erDquXcpyW8

If you want to follow along with this guide and build your own the files and code can be found on my github at https://github.com/keebie81/BinaryGame

Playable Version

Parts Needed

_MG_2773.JPG
_MG_2776.JPG
_MG_2774.JPG
_MG_2772.JPG

1 Rugged Metal Pushbutton with White LED Ring - 16mm White Momentary

1 Adafruit METRO 328 with Headers - ATmega328 - Any Arduino Uno variation would also work. I like the Metro because the bottom is smooth, so I didn't need to put standoffs for the board in my design.

15 M3 x 8 Socket Head Cap Screw

3 M3 Nuts

1 16x2 LCD

4 40mm Standoffs

Silicone Cover Stranded-Core Wire - 30AWG - I used multiple colors to make wiring easy to follow.

9 Toggle Switch SPDT Panel Mount - Any style will work, but I wanted the flatted style.

9 Switch Dress Nut 1/4-40 - Optional, for appearance. You can also use the hardware the switch came with.

Designing

binary_game_2016-Oct-28_11-25-04PM-000_CustomizedView16338850639.png
_MG_2765.JPG
_MG_2762.JPG
_MG_2771.JPG
_MG_2767.JPG

I designed the case in Fusion 360. This allowed me to position all the parts and make sure they fit. Once that was done I was able to 3d print the case and see how it fits.

It fit together well so then I created an svg of the two panels. The next step was to get the files ready to be sent out for laser cutting. I followed the templates provided by Ponoko. The instructions also got put on the bottom plate so people would know how the game works.

It took a bit over a week to get my parts from Ponoko.

Assembling Top Panel

_MG_2779.JPG
_MG_2780.JPG
_MG_2781.JPG
5813e2184936d40587000a30.jpeg
_MG_2784.JPG
_MG_2786.JPG
_MG_2789.JPG
_MG_2793.JPG
_MG_2794.JPG
_MG_2796.JPG

The top panel goes together pretty easy.

First put the nine toggle switches through and tighten them down. Then put the m3 screws for the display in. Put the spacers on the other side and then thread the screws through the mounting holes on the display. Last part is the 16mm button.

Assemble Bottom Panel

_MG_2797.JPG
_MG_2798.JPG

Use 3 M3 screws and nuts to fasten the board to the bottom plate. As you can see in the picture I had the holes wrong when laser cutting. I have fixed this for the template I put on github

Wiring

fritzing.jpg
IMG_2810.JPG
IMG_2813.JPG
IMG_2814.JPG
IMG_2811.JPG

To wire follow the diagram. The original design also used digital 1 and 0, but if the switches weren't in the correct position the board would have issues uploading code.

I soldered the wires to male headers plugged in to the Arduino board. This allows easy disconnecting in the future if you ever re-purpose the board. The LCD display also uses female headers to solder to.

One issue I had noticed after I wired was the wiring of the switches. You should verify the connections for a closed circuit. Using the switches I listed earlier when the lever is down the middle and top pin are closed. Since I wired mine wrong I needed to change my code. For the code I provide in this guide it is assumed yours is wired properly.

Also when wiring up the metal push button it should be in the normal open configuration.

Powering It

IMG_2820.JPG

You can connect the board to a computer via the usb cable to power it or use a portable phone charger batterypack such as this one https://www.adafruit.com/products/1959

How to Play

IMG_2815.JPG
IMG_2818.JPG
IMG_2816.JPG

When it turns on if it is in easy mode you will be given a random number between 0 - 15. If hard mode it will be 0 - 255.

You then flip the switches up to represent 1 or down for 0, then press the push button to see if you have it correct. If correct it will play the correct answer tone and give you a new number. If wrong it will buzz and say try again.

The value of the switches from left to right is 2^7(128), 2^6(64), 2^5(32), 2^4(16), 2^3(8), 2^2(4), 2^1(2), 2^0(1).

If the random number was 18 the binary value would be 0001 0010. That is because 2^4(16) + 2^1(2) would equal 18.

If it was 255 it would be 1111 1111, since all the numbers added up equal 255.

Video of It Being Played

Binary Game demo