Introduction: Arduino Wooden Pinball Machine
Ever since I was little, I was always fascinated by pinball machines. The sounds, the lights and the shooting and bounce of the ball. All this makes me feel nastalgic.
Now it was time to make one myself
Today in this instructables I am going to make a DIY pinball machine out of wood and arduino.
At the moment the project is in its basic form but this is a perfect start for everyone to put their own spin on it as they build it.
The wood I used for this project is 12mm plywood. And I used an arduino to display a score. The arduino section will be expanded in the future. Those steps are also going to be uploaded in these instructables.
Supplies
- 12 mm plywood
- Screws
- Pinball balls
- Original flipper mechanics for right and left flippers
- Iron tube
- Split pin
- M10 threaded rod
- M10 nut
- M10 acorn nut
- Springs
- Smal door stopper
- Washer
- Arduino Uno
- MAX7219 8-digit display
- Micro switch
- Mounting wire with flexible core
Handy Tools:
Drill and screw machine
Dremel
Jigsaw
Soldering iron
Step 1: Sketch
I started looking for pinball machines to get an idea of how I wanted my layout of the gamefield. On the left I want one or more targets to shoot at and in the middle 3 bumbers.
For the dimensions I came across flippers.be which lists the dimensions of original Bally/Williams pinball machines. The Bally/Williams pinball machines are 131,5 cm long and 56 cm wide. https://www.flippers.be/basics/101_flipperkast_afm...
The site dimensions.com also had measures of a pinball machine. There they say that pinball machines are 130 cm long, 56 cm wide and the playing surface is set at a slope of 6.5°. https://www.dimensions.com/element/pinball-machine...
I think 130 cm is too long for my own pinball machine so I went for a length of 105 cm and a width of 56 cm.
The playing field is on a slope of 6.5°
Step 2: Building the Cabinet
The sizes I used for the cabinet can be seen in the photos.
I used glue clamps and a straight piece of wood to cut straight with a jigsaw. The tape is to prevent splintering.
The pieces of wood are put together with angle irons.
Step 3: Buidling the Flippers
The pinball mechanics are of a real pinball machine. In a real pinball machine, the flippers are operated by means of solenoids. To control this with arduino you should first have 50 volts with enough ampere, a relay or mosfet and a diode. I find it scary to work with high voltages so I converted the flipppers to operate it with your own power.
To do this I took the coil off the solenoid. The catch of the flipper mechanism has been drilled through together with the iron tubes. The mechanics and the tubes are attached to each other with a split pin. To get the flippers back to their original position after pressing them. Use is made of a spring attached to the flippers and a screw that is in the middle of both flipper mechanics.
Step 4: The Ball Shooter
For the ball shooter I used an M10 threaded rod, small door stopper, some springs, whishers, M10 nuts and an M10 acorn nut.
I used a acorn nut for the handle. In order not to let it hit the pinball machine, I use 2 washers, a light spring and a nut to absorb the hit.
To shoot the ball I use 4 springs on the inside of the pinball machine, a nut to build up the tension and a small door stop to have a good surface to shoot the ball hard but not to damage the ball.
Step 5: Playing Field
At the top of the playing field I wanted to have a curvature. I drew this with a piece of string and a pencil. I made it by screwing 3 pieces of wood together and sawing out the curvature with the jigsaw.
On the sides I screwed a slat of 3,5 cm wide straight on. And to the left of the curve I made an extra curve so that if the ball doesn't go too fast it goes between the flippers. To make a way for the ball shooter I screwed another slat next to it.
Next to the flippers there must be some wood to create 2 courses to lose the ball because they can no longer reach the flippers and to make the ball roll towards the flippers.
Step 6: Behind the Flippers
At the bottom of the playing field there are some slats to catch the balls and guide them to the right below so that the balls can be picked up again. On top of this is a plank of wood in which I saw the shape of the bottom slats. The arduino is also hiding under this wooden plate.
Step 7: Score!!
The arduino part is far from finished, but you can score points. If you hit the left switch, you score points that can be seen on the 8-digit screen at the bottom left increase. The 8-digit screen fits nicely into the plate. This was done with a dremel. The arduino s powered by a battery bank.
This is the arduino code that is used:
//We always have to include the library #include "LedControl.h" const int buttonPin = 2; int buttonState = 0; //int Digit = 0; int punten = 5; int eerstenum = 0; //Now we need a LedControl to work with. int tweedenum = 0; //***** These pin numbers will probably not work with your hardware ***** int derdenum = 0; //pin 12 is connected to the DataIn int vierdenum = 0; //pin 13 is connected to the CLK int vijfdenum = 0; //pin 10 is connected to LOAD int zesdenum = 0; //We have only a single MAX72XX. int zevendenum = 0; int achtstenum = 0; LedControl lc=LedControl(12,13,10,1); unsigned long delaytime=250; ///* we always wait a bit between updates of the display */ void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT); /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0); } void loop() { scoreDisplay(); buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { punten++; Serial.println("HIGH"); } Serial.println(buttonState); } void scoreDisplay(){ lc.setDigit(0, 0, eerstenum,false); lc.setDigit(0, 1, tweedenum,false); lc.setDigit(0, 2, derdenum,false); lc.setDigit(0, 3, vierdenum,false); lc.setDigit(0, 4, vijfdenum,false); lc.setDigit(0, 5, zesdenum,false); lc.setDigit(0, 6, zevendenum,false); lc.setDigit(0, 7, achtstenum,false); //punten++; eerstenum = punten; if(punten > 9){ punten = 0; eerstenum = 0; tweedenum++; } if(tweedenum > 9){ tweedenum = 0; derdenum++; } if(derdenum > 9){ derdenum = 0; vierdenum++; } if(vierdenum > 9){ vierdenum = 0; vijfdenum++; } if(vijfdenum > 9){ vijfdenum = 0; zesdenum++; } if(zesdenum > 9){ zesdenum = 0; zevendenum++; } if(zevendenum > 9){ vierdenum = 0; vijfdenum++; } }
Step 8: Quick Update Video
Here are photos and a video of the pinball's current condition. More information to come. And the wiring under the pinball machine needs even better management. only a lot did not work so it was a lot of loosening and reconnecting wires. All functional time now works except the electromagnet (solenoid) between the bumpers is not yet connected.
Step 9: The Future
This project is still going on and I will be sure to post all updates here.