Although I currently lack a wood shop suitable for the actual construction of a pinball machine, work on the electronics side has been going well.
Since I’m kind of foreseeing this pinball machine becoming my forever project, infinitely built on and never truly named ‘done’, I figure it’s worth picking my battles, starting small, and working my way up in terms of functionality. In the interest of keeping things simple for my first time around, I’ve limited construction to three key pinball machine components. I’ll use snapshots from everyone’s favourite video-game pinball machine Space Cadet to illustrate my work.
Without these, pinball really would be a game of chance rather than a game of skill. Flippers are what let you control the pinball, and they’re a simple concept to design, but a deceptively complex one for my first hack.
Flippers are generally driven by solenoids, which push against or pull on some gearwork to make the flippers snap up and back. To keep my project from needing any higher power than the Arduino’s 5v supply, I tried purchasing a 5v solenoid, and was disappointed to find that it was remarkably small.
With intent to figure out the electrical requirements of a real, 25v solenoid later, I set out to ensure I had a program for the other important functionality of flippers, which was switches for a variety of user-controlled in-game stuff.
Here’s a video of me using my ‘flipper buttons’ to move an LED back & forth in a row. These will obviously have to connect to a set of gears & solenoids later, but for now I’ll just make sure the programming works.
Bumpers award you a tiny amount of points in exchange for shooting your ball away randomly at a high speed. These are powered by a solenoid, and a few pressure switches. The really ‘necessary’ ones are located at the bottom of the play field above the flippers, so that’s what I’ll work on first. Since they’re essentially some screws and a rubber band (at the simplest) they’re also the best ones to start with.
Lacking in both high-powered solenoids, and pressure switches, the only part of these I would be able to start working on at the moment is the code that records whether or not they have been tripped in order to award some points. This is, essentially, the same code as the flippers, so I’m not going to worry much about it until I have the technology, and a spare few pins on the Arduino, to help.
Pinball wouldn’t be much fun without something to shoot at, so some pressure sensitive targets that will incremenet a score when they are triggered are the way to go.
I’m going to model mine after the three gaps that usually sit at the top of most pinball machines, and make each one worth a slightly different point value.
In effort to maximize the amount of fun I can get out of a small number of parts, I’m going to add a popular mini-game to the targets in my pinball machine.
In addition to awarding points when the ball hits the target, it will also either turn on, or turn off an LED above each target. Lighting up all three LEDs at once will award a bonus number of points, and will turn all 3 LEDs off so that the process can be started again.
Hitting one of the flipper buttons will ‘move the line’ of LEDS in that direction, thus giving you the added ability to change the position of LEDs to make hitting one easier. Aside from showing the current score on a bunch of 7-segment LEDs, this was the most complex code to write, so I decided to tackle it first.
Here’s a video of the process, using two small buttons as the flipper buttons, and three other small buttons as the targets.
As you can probably see from the video, I’ve kind of run out of wire – there’s no rhyme or reason to the color of the wires used anymore, as I’m using all the ones my little starter kit came with. Creatron in Toronto sells a combo pack of all five colors of wire for $25 so that will have to be my next acquisition.
I also picked up a 74HC595 shift register and a 7-segment LED while I was at Creatron, so I’m going to start experimenting with driving the LED to show numbers from two pins on the Arduino, as I can daisy-chain the HC595 together and use it to show up to 6 digits, which is my end goal.