Ivan
Published © CERN-OHL

PinBall Table on Arduino

Game table created based on our favorite game - Pinball - on the Arduino; the cheapest and most easily manufactured board game.

AdvancedProtip9,349
PinBall Table on Arduino

Things used in this project

Story

Read more

Schematics

Circuit Schematic

Code

main game

Arduino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C myDisplay(0x27,16,2);

#define greenLED 2
#define yellowLED 3
#define redLED 4
#define sensor1 8
#define sensor2 9
#define sensor3 10
#define sensor4 11
#define sensor5 12
#define sensor6 13

void setup() 
{
  myDisplay.init();
  myDisplay.backlight();
  myDisplay.print("PLAY!");
  delay(2000);
  myDisplay.setCursor(0,0);
  myDisplay.print("        ");
  myDisplay.setCursor(6,0);
  myDisplay.print("GO GO GO");
  delay(2000);
  myDisplay.setCursor(0,0);
  myDisplay.print("        ");
  
  Serial.begin(9600);
  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);
  pinMode(sensor3, INPUT);
  pinMode(sensor4, INPUT);
  pinMode(sensor5, INPUT);
  pinMode(sensor6, INPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(redLED, OUTPUT);
 
  digitalWrite(greenLED, LOW);
  digitalWrite(yellowLED, LOW);
  digitalWrite(redLED, LOW);
  
}


int i=0;
void loop() {
  if (digitalRead(sensor1)==HIGH){
    i=i+20;
    myDisplay.clear();
    myDisplay.setCursor(5,0);
    myDisplay.print("+20!");
    digitalWrite(greenLED, HIGH);
    delay(2000);
    digitalWrite(greenLED, LOW);
    myDisplay.clear();
  }
  
  if (digitalRead(sensor2)==HIGH){
    i=i+50; 
    myDisplay.clear();
    myDisplay.setCursor(5,0);
    myDisplay.print("+50!");   
    digitalWrite(greenLED, HIGH);  
    digitalWrite(yellowLED, HIGH);
    delay(2000);
    digitalWrite(greenLED, LOW);
    digitalWrite(yellowLED, LOW);
    myDisplay.clear();
  }
  
  if (digitalRead(sensor3)==HIGH){
    i=i+100;                       
    myDisplay.clear();
    myDisplay.setCursor(5,0);
    myDisplay.print("+100!");       
    digitalWrite(greenLED, HIGH);   
    digitalWrite(yellowLED, HIGH);
    digitalWrite(redLED, HIGH);
    delay(2000);
    digitalWrite(greenLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(redLED, LOW);
    myDisplay.clear();
  }
  
  if (digitalRead(sensor4)==HIGH){
    i=i+20;                        
    myDisplay.clear();
    myDisplay.setCursor(5,0);
    myDisplay.print("+20!");       
    digitalWrite(greenLED, HIGH); 
    delay(2000);
    digitalWrite(greenLED, LOW);
    myDisplay.clear();
  }
 
  if (digitalRead(sensor5)==HIGH){
    i=i+50;                        
    myDisplay.clear();
    myDisplay.setCursor(5,0);
    myDisplay.print("+50!");      
    digitalWrite(greenLED, HIGH); 
    digitalWrite(yellowLED, HIGH);
    delay(2000);
    digitalWrite(greenLED, LOW);
    digitalWrite(yellowLED, LOW);
    myDisplay.clear();
  }
 
  if (digitalRead(sensor6)==HIGH){
    i=i+100;                       
    myDisplay.clear();
    myDisplay.setCursor(5,0);
    myDisplay.print("+100!");     
    digitalWrite(greenLED, HIGH); 
    digitalWrite(yellowLED, HIGH);
    digitalWrite(redLED, HIGH);
    delay(2000);
    digitalWrite(greenLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(redLED, LOW);
    myDisplay.clear();
  }
  
  if (i>=500){
    myDisplay.clear();
    myDisplay.setCursor(4,0);
    myDisplay.print("YOU WIN!");
    for (int j=0; j<=15; j=j+1){   
      digitalWrite(greenLED, HIGH);
      digitalWrite(yellowLED, HIGH);
      digitalWrite(redLED, HIGH);
      delay(100);
      digitalWrite(greenLED, LOW);
      digitalWrite(yellowLED, LOW);
      digitalWrite(redLED, LOW);
      delay(100);
    }
    i=0;                           
    myDisplay.clear();
    myDisplay.setCursor(0,0);
    myDisplay.print("New Game");    
    delay(2000);
    myDisplay.setCursor(0,0);
    myDisplay.print("        ");
    myDisplay.setCursor(6,0);
    myDisplay.print("GO!");
    delay(2000);
    myDisplay.setCursor(0,0);
    myDisplay.print("        ");
  }
  
  myDisplay.setCursor(0,0);        
  myDisplay.print("Your Score:");
  myDisplay.setCursor(0,1);
  myDisplay.print(i,DEC);  
}
  
    

for servo

Arduino
#include <Servo.h>

#define servopin 5
Servo myservo; 

void setup()
{
  myservo.attach(servopin);
  myservo.write(90);
  
}


void loop() {
  myservo.write(160);
  delay(1000);
  myservo.write(30);
  delay(1000);
  }

Credits

Ivan

Ivan

2 projects • 57 followers
Robotics Engineer Android Developer

Comments