This is a diagram of our pinball machine and how it will look.
This is the project brief.
These are the functions and requirements of the prototype .
This the final pinball machine requirement and what we should do when we finish.
it is used to send the ball back to the return/exit
Pinball machine bumpers run on a solenoid that is below it pulls down a ring on the bumper to push the ball in a different direction. when the ball is moved away from the bumper, the solenoid goes back to its former position ready to waiting for the ball to land there again
The flippers are used to hit the ball up and down the field
these are used to launch the ball up onto the ball field or like on a specific spot like a slide
it starts the game and deploys the ball
We went to the arcade we used different type of pinball machines looking for the main things similar things we tried all the machines
we recorded all the stuff on the pinball
Backbox/head.
Lower cabinet.
Playfield.
Plunger.
Flippers.
Bumpers.
Kickers and slingshots.
We found a source to the button then started to change the code to fit the needs to what we were doing so when we press the green button which is ball count the score will go down then if we press the black button which is score count the number will go up
We figured out how to get our score board working by using sources to wire it and find the code then we made it say score ball count .
We had to 3D print both of them it took 30 mins we had to look at a video to learn how to use the 3D printer they are made for the launcher then we put this glue inside of it and let it sit for 24 hours so it can dry and stick.
Me and my partner had to connect the switch to the power source we used wires from a computer charger cut it up then used it as our plug and wires we connected the wires to source then connected it to the switch using wire cutters then once we made sure the wires was connected to its certain point we finished.
So for the scoreboard me and my partner had to make a onshape file of this and use the laser printer to cut it to fit the scoreboard took a lot of trials and errors but we managed to get it on. We installed the scoreboards after cutting a hole in it with the jigsaw after that we made sure it could fit and made sure it was balanced then we drilled 4 holes on the side.
This pinball machine didn't take long to assemble me and my partnered used wood glue to keep certain sticking then once we finished the with the wood glue we started to drill holes in to keep it in place and made sure the parts were lined up and even then we started to used the jigsaw to cut spaces in the pinball machine to install the mounts.
With the switch mounts we had to go on onshape to laser cut the mount we first had to measure it get the right measurements to put in onshape then once we finished we drilled 4 holes on the 4 corners of the mount to keep it in place.
Me and my partner both had to make a wooden plank to keep the power source from moving upwards. We had to drill 4 holes 2 on the top and 2 on the bottom once we did that we had to make sure it was secure.
this was my first prototype it was pretty simple it was made so i could get a feel of what i was doing so when i made it i expected the target it to click and stay without hot glue it didn't so i had to make a new one
This was prototype 2 it have a circle on it because i wanted to try different shapes and sizes to see if it could work. my partner and i theme is planets so making a circle target is mostly needed
prototype 3 is when i started to add a mount i wanted to see if it could fit perfectly if it was drilled onto the wood and it turned out to work but it didn't feel quite right so i had to change it because the 2 sides was to big.
With prototype 4 i made the mount smaller and added 2 holes that could add a screw in its place to hold the target down so i wouldn't have to add hot glue.
so with this pro type i tried making it smaller to see if that was better then what i did before just to see if it would work better but it really didn't so i had to start making it the size i did again
With this prototype i added amount and i had the perfect one in mind i made them like piece wood glued them together they had a were a good idea but i had to make the mount smaller but overall i had the right idea
I changed the targets up i made 3 of them 2 was the same size and shape and the other one was the same shape but had 2 pieces that were a diffrent side it was suppose to be a better way of holding the target but i made the holes for the screw to small and had to remake it.
Coded and wired a neopixal design mixing the bumper and neopixel code together changing the order and design so that it can cause the neopixal to work with the switch.
Bases/Brackets/Mounting Plates.
Bushings.
Coil Stops.
Coils and Coil Sleeves.
End of Stroke Switches.
Flipper Bat and Shaft Assemblies.
Flipper Cooling Kits.
Flipper Nuts, Bolts, Screws, and Washers.
So basically with the flipper it is suppose to flick the ball upwards The important components is the coil it has a plunger a plunger its a solenoids so when pushed down it move or flick. the coil and solenoid when they fully active it hits the end of the stroke switch causing a flick the stroke switch had moving parts the flippers can be rotated in different ways 3 wires there 1 a common wire and the others high power the flipper button have a great deal of power to cause it to flip and the solenoid keeps it from over heating theres only a few important components its the rod and the flipper you put the brusher on aswell
solenoid
coils
buttun
I used on shape to design the nonpixel mount measured it so i could insure it was long enough and made sure it covered up the required areas.
This is my full video of the pinball machine fully functional and being played we spent the whole year on this project making sure every part and component works will the best quality and efficient
Integrated code
#include <Handler.h>
#include <NeoPixelColor.h>
#include <NeoPixelHandler.h>
#include <OutputHandler.h>
#include <PinballOutputHandler.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <PinballOutputHandler.h>
LiquidCrystal_I2C lcd(0x27, 20, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
//int Con = 60;
int score_increase_button = 9;
int score_increase_button2 = 11;
int score_increase_button3 = 3;
int score_increase_button4 = 2;
int ball_count_button = 13;
long score = 0; // A reular int can count to about 16384. A long can count to 2 billion.
int ball_count = 5;
const int buttonPin = A1; // the number of the pushbutton pin
int solenoid = A2;
int buttonState = 0;
// This object holds all of your background handlers. To execute the handlers, call outputHandler.handleAll()
// in loop().
OutputHandler outputHandler;
// Initialize all the neopixel strips and save them in an array so you can
// change values like brightness later.
#define NUM_STRIPS 6
Adafruit_NeoPixel pixels[NUM_STRIPS] = {
// Initialize the strips with the number of LEDS, pin number, and init parameters.
// Replace the pin numbers with the pins you are using for your neopixel strips
Adafruit_NeoPixel(10, 4, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(10, 6, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(10, 7, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(10, 10, NEO_GRB + NEO_KHZ800),
Adafruit_NeoPixel(10, 13, NEO_GRB + NEO_KHZ800), // 13 is just a placeholder, change pin number
Adafruit_NeoPixel(10, 13, NEO_GRB + NEO_KHZ800) // same
};
// An array to hold output handlers that correspond to the strips
NeoPixelHandler *handlers[NUM_STRIPS]; // to hold handlers that can control 6 strips
// Define custom colors here
NeoPixelColor cyan(0, 255, 255);
//connected pin
void setup()
{
// initialize the LED pin as an output:
pinMode(solenoid, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
//analogWrite(6, Con);
pinMode(score_increase_button, INPUT_PULLUP);
pinMode(score_increase_button2, INPUT_PULLUP);
pinMode(score_increase_button3, INPUT_PULLUP);
pinMode(score_increase_button4, INPUT_PULLUP);
pinMode(ball_count_button, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("title screen");
lcd.init();
lcd.init();
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
//Title screen
lcd.setCursor(4, 0);
lcd.print("Pinball");
lcd.setCursor(5, 1);
lcd.print("Madness");
// Initialize the output handler with the neopixel strip objects. Save the handler objects for later.
for (int i = 0; i < NUM_STRIPS; i++) {
handlers[i] = outputHandler.add(pixels[i]); // Note, this library calls begin() on the Adafruit_NeoPixel library.
pixels[i].setBrightness(25); // Set brightness to 10% to save power.
}
handlers[0]->on(NeoPixelColor::MAGENTA);
handlers[1]->on(NeoPixelColor::RED);
handlers[2]->on(NeoPixelColor::BLUE);
handlers[3]->on(NeoPixelColor::YELLOW);
}
void refreshLCD() {
lcd.clear();
//placement of text, first number is x axis, second is y axis
lcd.setCursor(0, 0);
lcd.print("score ");
lcd.print(score);
}
void loop()
{
Serial.println("loop");
//digitalRead() reads the value of the input which is either 1 or 0
//when it is on or off, respectively
int buttonValueOne = digitalRead(score_increase_button);
int buttonValue2 = digitalRead(score_increase_button2);
int buttonValue3 = digitalRead(score_increase_button3);
int buttonValue4 = digitalRead(score_increase_button4);
int buttonValueTwo = digitalRead(ball_count_button);
if (buttonValueOne == LOW) {
Serial.println("printing score button 1");
score = score + 500;
refreshLCD();
}
if (buttonValue2 == LOW) {
Serial.println("printing score button 2");
score = score + 500;
refreshLCD();
}
if (buttonValue3 == LOW) {
Serial.println("printing score button 3");
score = score + 500;
refreshLCD();
}
if (buttonValue4 == LOW) {
Serial.println("printing score button 4");
score = score + 500;
refreshLCD();
}
// Call the output Handler every time you go through the main loop.
outputHandler.handleAll();
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == LOW) {
Serial.println("selenoid button hit");
// close selenoid
digitalWrite(solenoid, HIGH);
} else {
// open selenoid
digitalWrite(solenoid, LOW);
}
}
BOTTOM VIEW
The launcher was installed the the far left of the pinball machine and it was covered by casing that would prevent the ball from going above or over the launcher.
This was the final part of the flipper and ball counter the flipper was connected to the solenoid which allowed it to flip the ball counter was 2 copper strips one connected to ground and the other connected to the ball count pin number and when ever the ball touches the copper it takes away points.
This the bumper and target the target was designed in on shape and laser printed with wood then had a button so when it was push it would put points on the scoreboard. The bumper was designed with a 3d printer and it had copper on a small spoon and on the tip of he top piece when the solenoid pushes up it press the spoon piece to the top piece and the copper will hit each other and bump