Electric Foosball Table

Introduction: Electric Foosball Table

Want to create a mini foosball table? This foosball table has an automatic score keeper.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Make Platform

Cut a 24x13 inch wood board

Wood board should be less than half an inch thick.

Cut 24x7 inch wood plank x2

This will be the long sides. Make sure to have two of these planks.

Cut a 2" by 2" hole on the bottom corners of the long planks.

These will be the outlet for the chute.

Cut 14x7 inch wood plank x2

This will be the short sides. Make sure to have two of these planks.

Drill three screws 3 1/4 " high from the bottom, equidistant on the horizontal axis.

Do this on the lengthier planks(i.e. the 24x7 inch wood boards).

Do this for both sides. The screws should be pointing into the base. They will be used to hold up the actual field (i.e. the playing surface).

Drill six 9/32" holes 1 1/4" from the "top" of the longer boards.

These will be the holes for the rods of the players.

Screw the four planks together.

The 14x7 have an extra inch than the actual field. This is to compensate for the thickness of the walls. Place the shorter planks on the ends of the longer ones, like bookends.

Step 2: Set Up the People

Cut a "goal hole" into both short ends of the 24"x13" board

This will be the playing field. After cutting the holes, place the board into the " box" that is the main structure of the table.

Cut 2' rods from 1/4" 2 count thread (steel all-thread) x 6

These will hold the players to hit the ball.

3D print 8 people for each team x 2

These will be the players.

Make sure that they have a hole 1/4" wide so they can slide onto the rods.

The people should be about 3 inches tall, with the hole for the rod above 2" with 1" left on top.

Fix the people into position

Each team has three rods, alternating starting from the teams defending side. The farthest back rod (defense) should have two players spaced evenly; the middle and front rods, three. Spacing is up to your discretion.

Use one nut on either side of each player to fix it into place after sliding the rods into the holes.

Tape the ends to prevent stab-based injury.

Step 3: Set Up the Electronics

Necessary Materials:

  1. 1x Arduino uno
  2. 1x lcd monitor (16x2)
  3. 1x potentiometer
  4. 1x button
  5. 2x flex sensor
  6. 40 pin cobbler breakout set
  7. around 20 wires
  8. 2x 330 ohm resistor

Set up configuration

It's a mess, so just look at the picture and try to follow aight.

Step 4: The Ball Chute and Score Counter

Cut two melamine boards 2" by 15"

These will be the bottom of the chute

Cut two melamine boards 2" by 13" (ish)

These will be the barriers of the chute to prevent the ball from slipping. I say ish because they will need to be a bit longer than thirteen so you can wedge them in.

Drilling the screws (both sides)

Drill one screw into the short plank just below the playing field and far away from the ball outlet. Drill another about 1 1/2" below the goal hole.

Cut 2" by 3" planks x6

Wood glue the planks into two C-shaped cuffs.

These will stop the ball as it comes down the chute.

Wood glue the cuffs as covers over the ball outlets.

Open faces should face up, down, and into the outlet.

Wedge the long melamine boards under the first and far screw, then over the second screw, then under the far face of the cuff.

Wedge the short melamine boards lengthwise just pass the chute base

Tape or glue the bend sensors partially extending into the ball outlets

These should pick up the ball passing through the chute and add one to the respective score.

Step 5: Tidy Up Those Wires

Velcro the breadboard and arduino to the inside of the box

Use zip ties and velcro to tie up any loose wiring and prevent any interruptions to the game

Step 6: Code It Upp

Upload this to the board.


LiquidCrystal lcd(12,11,10,9,8,7,5,4,3,2);

//idk, this was in some example code... :// const int flexpin1 = 0; const int flexpin2 = 1; const int resetButtonPin = 1;

//for player 1 and player 2 int score1 = 0; int score2 = 0;

void setup() { Serial.begin(9600); pinMode(resetButtonPin, INPUT); lcd.clear(); lcd.begin(16,2); lcd.print("Blue: 0"); lcd.setCursor(0,1); lcd.print("Red: 0"); }

void loop() {

int flexposition1; int flexposition2; int button1State; button1State = digitalRead(resetButtonPin);

//analog must be in A0 flexposition1 = analogRead(flexpin1); flexposition2 = analogRead(flexpin2);

Serial.print("sensor1: "); Serial.println(flexposition1); Serial.print("sensor2: "); Serial.println(flexposition2);

if (flexposition1 >= 725 || flexposition2 >=760) { if (flexposition1 >= 725) { score1+=1; } else if (flexposition2 >= 760) { score2+=1; }

lcd.clear(); lcd.setCursor(0,0); lcd.print("Blue: "); lcd.print(score1); lcd.setCursor(0,1); lcd.print("Red: "); lcd.print(score2); Serial.print("Blue: "); Serial.println(score1); Serial.print("Red: "); Serial.println(score2); delay(3000); }

if (button1State == LOW) { score1 = 0; score2 = 0; lcd.clear(); lcd.setCursor(0,0); lcd.print("Blue: "); lcd.print(score1); lcd.setCursor(0,1); lcd.print("Red: "); lcd.print(score2); Serial.print("Blue: "); Serial.println(score1); Serial.print("Red: "); Serial.println(score2); } delay(100); }

Be the First to Share


    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge
    • First Time Author Contest

      First Time Author Contest
    • Leather Challenge

      Leather Challenge



    3 years ago

    This is such a cool project. Nicely done!