Introduction: Breakout Pinball
cut some wood and connect some electronics, and you have a working game
Step 1: McMaster Carr
Get all your construction knick-knacks at the biggest warehouse ever. Get an extension spring, some handled grips. At All Electronics, get some Red/Green LEDs, some yellow LEDs, some really small, sensiitive switches, a 12v power supply(optional), and a big button. Also be sure to get an Arduino controller and breadboard.
Step 2: Starting the Controller
cut a strip of wood about a fists width and about up to a foot of length. Drill and put in two screws in the middle which will represent pivot points on the lever
Step 3: Secure the Screws
use nuts to secure the screws in place. I used 8-32" screws and nuts
Step 4: Hanger Screws
put two of the smallest hanger screws into the ends of two pieces of long wood strips that will work as the slingshot levers levers. the strength of resistance of the levers can be adjusted later
Step 5: Handles
cut out handles from .5in diameter poles and attatch the grips. use flathead screws to screw the handles onto the levers so the bottoms don't scrape the game board while moving. cut the handles shorter than they appear in this photo, so the handles won't torque in on each other
Step 6: Levers to Rails
attach the extension spring to the board, and drill two wide holes in the middle of the levers and attatch the levers to the board
Step 7: Braces
brace the levers so that they do not twist when force is put on them
Step 8: Add Tape and Prop Up Secondary Levers
add tape and prop up secondary levers to go on the surface level of the board. brace the outside of the levers with small screws so the levers don't swing out
Step 9: Power Supply
cut a hole in the bottom for the vent of the power supply and a hole on the side so an cord can be reached from outside the box.
Step 10: Attatch Power Supply
do it!
Step 11: Ball Dispenser
cut out a 4in diameter circle and carve out two holes on the edges a slightly smaller than a large pachinko ball. place disc on top of the board and find a good placement high up for a ball dispenser.
Step 12: Hole Switches
cut 4in pvc pipe pieces
drill out a wide mouth at the bottom and a thin slit on the top.
make sure the mouth and the slit are on the same time, as they will rely on gravity to work properly
zap a gap the switches in so that the switch does not obstruct the opening
drill out a wide mouth at the bottom and a thin slit on the top.
make sure the mouth and the slit are on the same time, as they will rely on gravity to work properly
zap a gap the switches in so that the switch does not obstruct the opening
Step 13: Insert Tubes and Servo to Gameboard
use zap a gap and wood glue to attach tubes to top of the board.
Step 14: Sunrise
when pulling all nighters, make sure you take a break to see the sunrise
Step 15: Arduino
attach button and servo. the idea is to use the button to dispense the ball since there is no detection if the player loses the ball in the gutter.
http://www.arduino.cc/playground/Learning/SingleServoExample
http://www.arduino.cc/en/Reference/Servo
http://www.arduino.cc/en/Tutorial/Button
#include <Servo.h>
Servo myservo;
int inPin = 2; // choose the input pin (for a pushbutton)
int val = 0; // variable for reading the pin status
bool flag = false;
int timer = 0;
int WAIT = 3000;
void setup() {
myservo.attach(9);
pinMode(inPin, INPUT); // declare pushbutton as input
}
void loop(){
if( millis()-timer > WAIT && !digitalRead(inPin))
{
flag = !flag;
timer = millis();
}
if(flag)
{
myservo.write(0);
}
else
{
myservo.write(180);
}
/*
val = digitalRead(inPin); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
myservo.write(0);
} else {
myservo.write(180);
}
*/
}
http://www.arduino.cc/playground/Learning/SingleServoExample
http://www.arduino.cc/en/Reference/Servo
http://www.arduino.cc/en/Tutorial/Button
#include <Servo.h>
Servo myservo;
int inPin = 2; // choose the input pin (for a pushbutton)
int val = 0; // variable for reading the pin status
bool flag = false;
int timer = 0;
int WAIT = 3000;
void setup() {
myservo.attach(9);
pinMode(inPin, INPUT); // declare pushbutton as input
}
void loop(){
if( millis()-timer > WAIT && !digitalRead(inPin))
{
flag = !flag;
timer = millis();
}
if(flag)
{
myservo.write(0);
}
else
{
myservo.write(180);
}
/*
val = digitalRead(inPin); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
myservo.write(0);
} else {
myservo.write(180);
}
*/
}
Step 16: Finished for Now
play everyone's game and enjoy your work.. for now