Enter e14's 2016 Costume Contest Here!



Writing the final post for a project is always tough for me because I constantly second guess myself on whether or not I could have spent more time on the project, or if I have covered everything that needs to be covered. Fortunately, I can write this post knowing that I could not have spent more time on this project, because I ran out of time two days ago. My original deadline for this project to be complete was actually two days ago, but I simply was not anywhere close to finished by the time the deadline arrived. Thankfully, the good people here at Element14 granted me 48-more hours to finish up.


Before we get into the main update, I want to take a moment to talk about why I got behind, and then how Murphy’s law came into effect several times over the last week. The first issue arose when some of the parts I ordered for this project did not arrive. The NeoPixelsNeoPixels, and arcade buttons did not arrive with the original parts order, and I went ahead and ordered a roll of NeoPixels from Amazon just in case they did not arrive before I needed them. I also ordered a pack of 10 arcade buttons from Amazon, but when they arrived, they did not have the micro switches attached to them, and were just the button assembly. I did manage to find two old arcade buttons in an old project parts box I had in my attic.


The second issue arose when I was working on mapping two GPIO pins on the Raspberry Pi 3 to keyboard inputs. I tried several different GPIO to keyboard mapping packages, and none of them worked with the Pi 3 / Raspbian Jessie. After spending a day on this, I finally tried Adafruit’s RetroGame package, and while it worked, it somehow bricked the Python install on the Pi. I ended up having to format the SD card, and start from scratch. This was not that bad though because I had all of my code saved. I reinstalled the RetroGame package, and everything worked fine this time, so I assume something was corrupted when I ran the makefile in the Retrogame install.


The final issue was split between Friday evening and Saturday Morning. I had been planning to design some graphics for the front of the slot machine, and then printing them on lightweight paper, but as it turns out the large format printer at my local Staples was broken. To make this matter worse, Staples is the only place locally that can print anything larger than 24-inches wide. So I woke up early Saturday morning and called several other printing locations within 30 miles, and all of them were either closed on Saturday, or they were not willing to do a single print on short notice. This forced me to come up with a solution very last minute, and you will read more about that later. So yea, that is basically how the last week of my life went, and I apologize to E14 as well as the community for this late post. Now let's get started with the actual update!



Button Play



One of the key aspects of this project is to use my left arm as the pull handle that triggers the slot machine’s roll. Since the Bfruit program uses keyboard input to control the game, I needed to map a couple of GPIO pins to work as those keyboard inputs. As I mentioned earlier, I tried several different packages that are supposed to be able to do this, but none of them worked with the Raspberry Pi 3Raspberry Pi 3 and Raspbian Jessie. I have used PiKeyed in the past, and it was the first package that I went to, but apparently there is some issue with the Debian Jessie kernel that renders it useless. Basically I could get the PiKeyed Daemon running, but it would not register any key presses from the buttons I had attached to the GPIO pins I mapped in its config file. The two other programs I used also had this same issue, and I assume that they are based off of the same code.


In the end I wound up using the RetroGame package from Adafruit. In hindsight I should have used this package from the start, but I was under the impression that I had to install the full RetroPie suite for it to work correctly, and I did not want all of the extra bloat that it would have added to this simple project. After talking to some people in the Adafruit forums, I realized that I could just install RetroGame and nothing else. There are a few tutorials online and at Adafruits website that covers the install, but I found them all to be a little different from each other, and some are missing key parts of the install for the latest version of the program. So to make things easier for anyone following this project at home, I am going to list my install process below, but first, I want to cover how I wired the switches to the Raspbery Pi 3’s GPIO pins.




The game has two key buttons for gameplay. The left arrow initiates the “spin”, and the up arrow is used to increase the “bet”. The game also uses the escape key, and the enter key, as well as the right arrow, but they are more for menu navigation, so I am not too concerned with them being broken out to physical arcade buttons. I plan on keeping a wireless keyboard in my backpack when showing off the costume at parties, so I can use it to start, and restart the game. Looking at the Raspberry Pi 3 pinout diagram above, I will map GPIO17 to the left arrow key, and GPIO22 to the up arrow key.  The ground pins located at board pin numbers nine and fourteen are used as the ground for each button. The diagram below should clarify this layout some.




As you might have guessed, I am using the buttons to pull their respective GPIO pins down to low when pressed, and some of you might be wondering why I have not added in any pull-up resistors. The answer is that RetroGame enables the internal pull-up resistors for each pin I map in the program’s configuration file. By using the internal pull-ups I am able to reduce the components needed, and make the circuit as simple as possible.



Mapping the GPIO Pins to Keyboard Keys using RetroGame




With the buttons wired I was able to move onto installing the RetroGame package. The process is not hard, but there are a few key steps for the newer version of the program that many of the older tutorials on the internet do not have. Note: Now would be a good time to backup any code that you have not backed up previously. As I mentioned in the intro to this post, something went wrong during my initial RetroGame install, and it bricked the Python package installed on my Pi, and the only way I was able to fix things was with a fresh install of Raspbian Jessie.



Installing RetroGame to Raspbian Jessie



Most of this tutorial is copied from Adafruit’s Install RetroGame tutorial found at (https://learn.adafruit.com/super-game-pi/initial-setup) , I have amended a few things here and there to include a couple of steps unique to the new version of RetroGame.


Download RetroGame

Navigate to the pi's home/pi directory and download the Adafruit Retrogame repo from github.

  $ cd /home/pi/

  $ git clone git://github.com/adafruit/Adafruit-Retrogame


Edit The Config File

Now before we finish installing RetroGame we need to edit its configuration file to map the Pi 3’s GPIO pins to the correct keyboard strokes. Find the retrogame.cfg file in /home/pi/Adafruit-Retrogame-master and edit it using nano to configure and comment out any GPIO pins you do not want to map. Used the sample text below.

$  cd /home/pi/Adafruit-Retrogame-master

$  sudo nano retrogame.cfg



# Sample configuration file for retrogame.
# Really minimal syntax, typically two elements per line w/space delimiter:
# 1) a key name (from keyTable.h; shortened from /usr/include/linux/input.h).
# 2) a GPIO pin number; when grounded, will simulate corresponding keypress.
# Uses Broadcom pin numbers for GPIO.
# If first element is GND, the corresponding pin (or pins, multiple can be
# given) is a LOW-level output; an extra ground pin for connecting buttons.
# A '#' character indicates a comment to end-of-line.
# File can be edited "live," no need to restart retrogame!

# Here's a pin configuration for the PiGRRL 2 project:

LEFT       17  # Joypad left
# RIGHT     19  # Joypad right
UP        22  # Joypad up
# DOWN      26  # Joypad down
# LEFTCTRL  14  # 'A' button
# LEFTALT   15  # 'B' button
# Z         20  # 'X' button
# X         18  # 'Y' button
# SPACE      5  # 'Select' button
# ENTER      6  # 'Start' button
# A         12  # Left shoulder button
# S         13  # Right shoulder button
# ESC       17  # Exit ROM; PiTFT Button 1
# 1         22  # PiTFT Button 2
# 2         23  # PiTFT Button 3
# 3         27  # PiTFT Button 4

# For configurations with few buttons (e.g. Cupcade), a key can be followed
# by multiple pin numbers.  When those pins are all held for a few seconds,
# this will generate the corresponding keypress (e.g. ESC to exit ROM).
# Only ONE such combo is supported within the file though; later entries
# will override earlier.



Now save and exit using ctrl + X and then answer Y


Copy the config file to the /boot directory

Next we need to copy this file to the /boot directory

sudo cp retrogame.cfg /boot


If you are unable to copy the file to /boot because of permissions, you can drop into the root user and move it that way then exit back into the raspberry user.

$ sudo su

$  cp retrogame.cfg /boot

$  exit


Finishing Up

Now lets finish the Retrogame install by compliling the programs code.

$  cd /home/pi/Adafruit-Retrogame-master

$  make retrogame


Now move the Retrogame program to the usr/local/bin directory

$ sudo mv retrogame /usr/local/bin


Next, we need to set Retrogame to run at startup. To do this we need to edit the rc.local file

$  sudo nano /etc/rc.local


  Add the following line to the bottom of the file but above the final "exit 0" line. Do not forget the "&" at the end of the string.

/usr/local/bin/retrogame &


Finally we need to create a new rules file for RetroGame that will allow it to run more efficiently.

$  sudo nano /etc/udev/rules.d/10-retrogame.rules


And paste in the following line exactly as it is shown below.


SUBSYSTEM=="input", ATTRS{name}=="retrogame", ENV{ID_INPUT_KEYBOARD}="1"

Note for Pi 3 and Raspbian Jessie Users.

If you are building this project on a Raspberry Pi 3 running Raspbian Jessie, you will need to make a small change in Raspi-Config so that rc.local is called a little later in the boot stack. This is a known issue with Raspbian Jessie, and for those of us who like to use rc.local for running programs on boot, this is the best way to fix the issue.


To get rc.local working correctly in Raspbian Jessie Do The Following

$ sudo raspi-config


Then navigate to option #4 "Wait for Network at Boot" and set its option to "Yes"


Now reboot the Pi

$  sudo reboot



When the Pi reboots, you can test to see if our key-mapping worked by loading into Pixel and navigating to the office suite and opening a new writing document, and typing some characters with the keyboard. Then press the button connected to GPIO Pin 17 and you should see the cursor move back one space. Multiple presses should move it back even further. If this works, then you are set to go, and can move on to testing with Bfruit.



The Slot Machine Body



To be perfectly honest with everyone, I did not document the build process of the slot machine body other than a few photos here and there. This was because I knew I did not have enough time in this post to cover a 5-hour build step by step. I will share a few photos of the process though.




I started out by laying out all of the various cuts that were needed to get the desired shape I needed to build the face of the slot machine. Here you see me laying out where the Raspberry Pi 7-Inch Touch Screen will be located. I used a variety of different rulers, scales, and squares to build the machines body.




Here you can see me making the various cuts in the foam core that I laid out the machine’s face on. The reason I used foam-core was because it is very lightweight, cheap, and versatile for this kind of build. Since foam core is comprised of a piece of styrene foam that is sandwiched between two pieces of cardboard, it makes building angled 3-dimensional shapes fairly easy. In my case I needed the area where the screen sits to be recessed back into the body of the machine, and I was easily able to achieve this by making a series of “half cuts”. Half cuts are basically a cut that slices through one cardboard layer as well as the foam layer with the second layer of cardboard remaining uncut. This allows you to make very crisp, precise bends, which can be locked into place by filling the “V-Groove” that forms between the cut with hot glue and letting it set.


18 inches Alumicutter close up.jpg


You will also notice that I am using a special ruler that is designed for this kind of work. It’s called an Alumi Cutter, and is designed to keep your fingers safe, and the blade at 90-degrees when cutting foam core. I have several of these in different sizes, and can not even guess at how many times they have saved my fingers when cutting foam, fabric, and plastics with an exacto or box cutter. I highly recommend picking one up if you are going to be making a lot of straight cuts with a razor sharp knife.




Here is a good example of how half-cuts are so useful when working with foam core. I made a half-cut at the top of the recessed section, then flipped the foam core over, and made two half-cuts from the back. Then I made a final cut all the way through the bottom, and down each side. This allowed me to “bend” the foam core to create a 3D profile that I then locked into place with hot glue. You can also see the cutout for the touchscreen.




Here you can see that I mounted the two arcade buttons I scavenged from an old project. I wanted to use separate colors, but these are what I had to work with. If you are curious about what I am doing with that full sheet of foam core, I am just eyeballing the length I will need to cut the sides of this box at.




Once I got the sides cut and installed, I was read to mount the first layer of the front of the machine. I doubled up on this layer, as well as on the sides and top of the face because I will be cutting out slots the thickness of a single sheet to recess LED strips into the surface. A good hot glue gun is paramount to working with foam core and remaining sane. I personally like this model from Aleen’s because it has dual temperature settings, and several interchangeable tips for more precise control of the glue application process.




With the basic shape of the slot machine finished, I moved on to reinforcing areas of the body that might experience wear or stress during my night party hopping. Here you can see that I have already covered most of the front face with a second sheet of foam core, and in this photo, I am readying the surface of the rest of the front with PVA glue for a second layer here as well.




Here you can see the piece of foam core I cut out to reinforce the top and sides of the front face of the slot machine.




When I reinforced the sides, I made them extra thick, and in doing so, they were not all the same height. To fix this problem, I took each stack out to my woodworking workshop and used my 60+ year old Rockwell jointer to true up one side.




With one side now flat, straight, and square, I was able to true up the other side on my table saw. This did create a lot of fine foam dust, so if you attempt to do this yourself, wear a respirator.



Installing the Electronics




With the reinforcements on, I used tape to hold everything down nice and tight while the glue dried. Surprisingly, archival-grade PVA glue dries incredibly fast. I think the total drying time was less than 10 minutes before I was able to remove the tape and move on with installing the LCD.




I used more painters tape to hold the LCD in place, and then flipped the slot machine over so that I could secure the LCD to the body using hot glue.




As you can see, the Raspberry Pi 7-Inch touch screen fits nice and flush when placed in a single sheet of 5mm foam core. I cut the hole out so that it would be a very tight fit on purpose, but I do recommend that you leave one edge a little wide so that there is some wiggle room in the event that you need to pull the screen back out. I also suggest when placing the screen in, you place the edge with the orange ribbon cable in first, so that they do not get pinched during the install.




To hold the LCD in place, I used a generous amount of hot glue. I know what you are thinking: “That is going to be a pain to remove when the project is over.” but I have a easy solution for removing hot glue easily. You simply have to freeze it using a can of compressed air which you turn upside down. The glue becomes very brittle and it simply pops right off.




With the screen in place, it was time to start adding in the rest of the hardware. Since I plan on reusing this hardware in a desktop arcade style slot machine, I chose to just glue in an old small breadboardsmall breadboard, and wire everything up temporarily. Here you can see that I have added in the Arduino nanoArduino nano, a barrel jack, and a 600uF 60V capacitor to balance out the input power for the NeoPixels as Adafruit suggest.




Now we need to wire up the arcade switches, and to do that I crimped some female spade terminals onto the ends of some wire, and wired the switch into Normally Open mode. I really appreciate the higher quality arcade buttons that use these removable micro switches, as they make wiring things up very easy.




I soldered common female dupont jumper wires to the other end of the switch wires and then connected them to their respective pins on the Raspberry Pi. See the button wiring schematic earlier in this post for more information on where those wires go.




Here is a diagram of the final circuit for the complete whole project.




I know someone was wondering what the blue wire that was tied around the Pi 3’s standoffs was, and the answer is that it is a simple safety cable. While I am sure the hot glue will hold the screen in place just fine, a little insurance never hurt anyone.



Installing the NeoPixel Strip




Now that the internal electronics are installed and hooked up, I needed to move onto installing the NeoPixel Strips on the external face of the slot machine. Early on I decided to recess the NeoPixels into the face of the machine, and the easiest way to do this is to make two parallel half-cuts in the foam core that is slightly wider than the LED strips. In my case, the strips were 1cm wide. Once the cuts have been made, you can simply pull out the thin strip you created, and you are left with a 5mm deep slot to place the LED strips in.




One important thing to remember is that the dimensions your LED stips have to be spaces will be determined by where the solder points are on the end of each strip. It’s hard to see, but you can see that the last LED on the strip is about another strip’s width from the end where the solder points are. This allowed me to make the next cuts with the top stip overlapping the unplaced strip by about 1cm. This makes wiring the strips together very easy, and in my case, it worked out perfectly for the spacing that I needed for symmetry.




With all of the slots cut out for the NeoPixel strips to recess into, it was time to begin wiring up the strips. Since NeoPixels need a 5V, Data, and GND line, I am using three of the wires from 4-Conductor RGB LED wiring. I buy this stuff on Ebay in 200’ quantities whenever I need a few feet. It’s cheaper than any other 4-conductor wire on the market. I do not have a nice pin crimper, so I just solder the male header pins straight onto the wires.




Once the header pins have been soldered on, I use a pair of flush cutters to split them apart. If the pins will be located close to to other components or pins, I will sometimes heat shrink them at the connection, but in this case it was not needed.




Next I needed to solder the wires to the actual NeoPixel strip and that is pretty straight forward. One tip I can offer would be to not keep the heat on each pad for very long. I have soldered hundreds of these strips over the last few years, and have seen many joint failures from the pad lifting due to too much prolonged heat. I like to pre-tin the pad, and the wires, then use as little heat as possible to make the connection.




One other quick tip I can offer is to use the grid lines on a cutting mat to quickly and easily cut heat shrink tubing to precise inch long sizes. On most cutting mats here in the US, the grid is based on 1-inch divisions.




One lesson I learned after installing hundreds of LED strips in different haunted houses is that their weakest point is where the solder connection is. It does not take very much stress at all to rip a solder pad from the strip. To alleviate this, I add two heat shrink tubes to the wire, shrinking one overtop of the other.




Then I slide a third heat shrink tube over the LED strip by about ½-inch. This creates a very nice stress relief, and protects the solder points from shorting out. It does use a little more heat shrink, but it is worth it in the end.




One of the most tedious parts of this project was soldering up the NeoPixel strips into squares. To get the angle right, and ensure proper spacing between strips, I used tape to affix them to a scrap piece of foam core, then soldered short wires from point to point. Note that I do have these two strips positioned incorrectly. I have the Digital Out pins on each strip facing each other. The bottom, horizontal strip, should be flipped around so that the Digital In pin can be connected to the Digital Out pin.




Once each corner joint was complete, I potted the corner using hot glue. This acts as a strain relief, and helps keep the corner square.




With all of the NeoPixel strips built it was as simple as removing their adhesive tape’s backing and pushing them into place.



Now connect the NeoPixel strips to the Arduino like so.




A quick test using the Rainbow Chase function showed that they are all working. Both strips run from the same pin, so the animation is the same, but I have the direction they chase in reversed by the way I mounted the smaller square.



Building the Slot Machine Arm Sleeve




You might remember from my first post that I purchased a few yards of this shiney silver metallic stretch fabric with the intention of using it as a sleeve on my left arm. This combined with the tilt sensor, and a cheap halloween childrens flashlight will create the pull arm for the slot machine. I will be the first to admit that sewing fabric together is not one of my strong abilities, much less sewing it so that it conformed to my arm. So I enlisted the help of my girlfriend who is a professional fiber artist, and general all around maker. Using her sewing machine, and seamstress skills, she quickly had the sleeve crafted, and there was enough material left over for her to make jokes about sewing me a pair of short shorts together….




I did not get many photos of her sewing the sleeve together because I was busy working on the rest of the project, but here it is in all of its glory. The sleeve fits over my arm quite well, and the pumpkin flashlight is fastened into place. The sleeve will go on my arm before I put a black t-shirt on, thus hiding its open end. So let's look at how I built the electronics into this piece.




As I mentioned earlier, I will be using a simple tilt switch to control the spin of the slots wheels. If you are unfamiliar, a tilt switch consist of a plastic tube that is encased in a metal housing. Inside the tube is a small steel ball. Then the tilt switch is tilted down, the ball makes contact with two contacts, and completes the circuit. Installing the tilt switch was as simple as soldering two wires to its leads, and adding heat shrink.




On the other end of the wires I soldered on two Dupont female jumper ends. These will plug directly into the Raspberry Pi 3’s GPIO Pins.




The pumpkin flashlight originally came with a very dim incandescent christmas light bulb, and was powered by two AA batteries. All of that had to come out, and I added an 8mm NeoPixel LED so that the pumpkin could still light up. I did have to drill the hole out, and I just happened to have a 7mm drill bit laying around. I was able to wiggle it a little in the hole and that widened things enough for the 8mm LED to fit snugly inside.




I forgot to take photos of the 8mm NeoPixel being wired up, but I did remember to take a photo of it hot glued into place.




On the other end of the Pixel wires, I added three more DuPont female jumper ends so they could be plugged into the breadboard using some spare male header pins I had laying around.


Finishing Up



I absolutely ran out of time to install the Bluetooth speaker the way I wanted to, so I simply hot glued a stack of foam core together, then glued it to the front panel from behind. This gave me a ledge to place the speaker. A rough hole was then cut out, to allow the sound to pass through. Don’t worry though, I covered this ugly hole up with something.




One of the final parts of the build was to fabricate a solution that would easily hang the slot machine from my shoulders. A good friend of mine is a professional cos-player, and he suggested that I build a shoulder harness out of PVC pipe, and that is exactly what I did. This used about 5-feet of PVC, 2 elbows, and two caps. I mounted each arm to the slot machine by building two stacks of foam core, then drilling a ⅞-inch hole in each with a Forstner bit. I then hot glued them into the holes. This setup is surprisingly comfortable, even with both battery packs inside the slot machine, and it holds the machine at the perfect height for people to play while I am walking around.




Here is a quick shot of how I am powering the Raspberry Pi, the Touch Screen, and the Arduino Nano / Neo Pixels. The striped red USB cable powers the screen, via a 2.4A port on a battery bank, while the black USB cable powers the Raspberry Pi 3 from a 2.4A port on a second battery bank. The solid red USB cable provides 5V 1.5A to the breadboard which powers the Arduino Nano, and the NeoPixels.




This is the two power banks I am using to power the costume. The KMASHI is a 16,000mAh 2.4A / 1.5A battery bank while the Royal is a 10,000mAh 2.4A battery bank. I picked both up from Amazon, and I think I spent $15 on the KMASHI, and $10 on the Royal.





Finally we have a shot of the front of the slot machine after some decorations have been added. I originally planned on designing custom graphics for the machine, but as I mentioned at the beginning of this post, ran into printing issues. So I did the next best thing, and wrapped it in silver wrapping paper, and printed some logos that I then mounted to foam core and cut out. Both of these are glued to the slot machine body with 1cm standoffs behind. I am using the Halloween Pi logo to cover the ugly hole I cut for the speaker.


Running The Bfruit Program


Now that everything is buttoned up and connected, we can run the Bfruit Python script. There are two ways to quickly do this, but before you run the scrip, you will need to enable the built-in Bluetooth by clicking on it in the top navigation bar in PIXEL. Then to pair with the Bluetooth Speaker, you will need to right click on the audio icon, and select the speaker you want to pair with. If you do not want the games audio to play, then you can ignore this step.


Running the program via CMD

If you are remotely connected to the Raspberry Pi via SSH, then you can simply navigate to the Bfruit directory and then use the following command to run the program on the Pi and the script will run in full screen mode on the touchscreen.


$ cd /home/pi/Desktop/bfruit-0.1.2

$ sudo python bfruit.py


Running the program from inside the PIXEL GUI

If you are not remotely connected to the Raspberry Pi 3 via SSH and want to run the program, you will need to take the following steps to use IDLE to run the script.



Locate the bfruit folder in the directory you saved it to. I placed mine on the desktop for ease of access.



Then double click on the bfruit.py scrip, and the program will open in IDLE.



Once the script is open in IDLE, you can make any edits to the code that you wish, then navigate to the Run menu at the top of IDLE, and click on the Run Module option that is available. This will run the Python script. Unfortunately I was unable to take a screen shot of this as there is a bug in the built in PIXEL's built in screen shot utility that prevents screen shots of open menus.




When the Python script first runs, a quick warning window will pop up letting us know that GPIO37 is already in use, but you can ignore this, and it will not affect our program at all.




When bfruit loads, it will open in a windowed screen. You will need to navigate to its settings menu and select the full screen option so that it takes up the entire touchscreen.




Once you have selected the full screen option, simply select the back to main menu option to return to the main menu. From there, select new game, and enjoy the fun! I apologize for no screen shot of the actual game itself which is due to another bug that prevents PIXEL's built-in screen shot utility from taking screen shots if a Python Program is running in full screen mode. I have reported these bugs to the developers to see if they can be fixed.




All in all, I am quite happy with how the hardware turned out for this project, and a little disappointed with my execution of the theming. I would have looked so much better with the graphics I wanted to print, but honestly it is what it is, and being able to improvise on the fly is what being a maker is all about. If I would have had two more weeks to build this, I may have scrapped the whole foam core idea and built the whole thing from wood, but I can sit back and play the what-if game all night. In the end, it was a fun project, and my friends are already excited for me to wear it to their Halloween parties. Note that the video above was created after being awake for 39-hours straight. I will be replacing it with a better video in the coming days.


I want to take a moment to answer a few questions that I have gotten via comments, and messages.


Q:  Will you provide an image of the OS so that anyone could replicate this project without having to modify code, and use the terminal to install packages?

A:  No image will be made of this project. I feel that creating an image of any of my tutorial projects causes them to lose some of their educational value. If you follow this tutorial, and download the bfruit program from its original source, then modify it's python code using my code examples, you can have this project up and running in just a few hours.


Q: Are there design files available for the slot machine costume?

A: No. Design files were not produced because I built the slot machine body on the fly. I had a general idea of how I wanted it to look, and I simply built it using the plans that were inside my head.


Q: Why are the modified slot machine icons not available in the GitHub repo for this project?

A: The images I used for the slot machine's spinner wheels belong to different companies, and while I am sure they would not mind me using them in this project, I am sure they would not like me sharing them with the world on my GitHub. It's more of a "I don't want to get an angry email" kind of thing. If you want to create your own icons for your version of this project, you simply need to resize the images you would like to use to 128px X 128px, and make them a transparent .PNG file.


Q: If you were to build this project again, what would be the one thing you did differently?

A: I would definitely add more architectural features to the slot machine body, and then wrap the entire thing in custom designed graphics.


Q: When I try to run the bfruit.py program, it seems to be missing a lot of different files.

A: You have to download the original Bfruit program files from the source forge link that I posted in part two of this project. I also have the required files in a zip file on my Github.



I want to thank Element14, Raspberry Pi, and all of the staff at Element14 who gave me the opportunity to build this project. If you have not yet read the first two parts to this project, then head over to the links below to get caught up! That is going to wrap up this project for me. I will post an updated video with some footage of people playing the game at some of the parties I will be attending, but do not look for those until after Halloween. Thanks for taking the time to read this project, and I will see you on my next post! Until then remember to Hack The World, and Make Awesome!


Check Out The Full Project!

  1. Raspberry PySlots: The Costume - Introduction
  2. Raspberry PySlots: The Costume - Hardware, Software, and Pretty Lights!
  3. Raspberry PySlots: The Costume - The Slot Machine, NeoPixels, Pull Arm, And Finishing Things Up