Me falla el chupitometro

intente realizar el chupitometro lo hizo tal cual decía pero me falla el servomotor por que gira solo sin que le este aplanando al switch les agradecería que me ayudaran a resolverlo.
Aqui esta el código y la pagina de donde lo saque:

//Añadimos la librería servo.h
#include <Servo.h> 

//Creamos un objeto Servo
Servo servo1;  

int grados = 90;              // Grados del servo
int servoPin = 9;             // Pin para el Servo

boolean estadoP1;             // Estado del pulsador Player 1
boolean estadoP2;             // Estado del pulsador Player 1

int rep1 = 0;                 // Variable para primer ciclo For
int rep2 = 0;                 // Variable para segundo ciclo For

int numAl = 0;                // Numero aleatorio
int time = 0;                 // Tiempo ejecucion
int time2 = 0;                // Tiempo ejecucion 2
int contP1;                   // Contador pulsos P1
int contP2;                   // Contador pulsos P2
int freqJuego = 1000;         // Tiempo LED apagados
int freqLed = 500;            // Tiempo LED encendidos

//Pines para los LED del juego
int pinLedGeneral = 3;
int pinLedErrorP1 = 4;
int pinLedErrorP2 = 5;
int pinLedAciertoP1 = 6;
int pinLedAciertoP2 = 7;
int pinLedP1 = 8;
int pinLedP2 = 10;
int botonP1 = 11;
int botonP2 = 12;

void setup()
{
 servo1.attach(servoPin);     // Asignamos servoPin como Servo
 servo1.write(0);             // Lo mandamos al grado 0
 delay(800);                  // Le damos tiempo a que llegue
 servo1.write(179);           // Lo mandamos al grado 179
 delay(800);                  // Le damos tiempo a que llegue
 servo1.write(grados);        // Lo llevamos al punto de partida

 //Establecemos la configuracion de lo Pines
 pinMode(pinLedGeneral, OUTPUT);
 pinMode(pinLedErrorP1, OUTPUT);
 pinMode(pinLedErrorP2, OUTPUT);
 pinMode(pinLedAciertoP1, OUTPUT);
 pinMode(pinLedAciertoP2, OUTPUT);
 pinMode(pinLedP1, OUTPUT);
 pinMode(pinLedP2, OUTPUT);
 pinMode(botonP1, INPUT);
 pinMode(botonP2, INPUT);
} 

void loop()
{
 numAl = random(0, 99);      // Generamos un numero aleatorio
 time = millis();            // Almacenamos el tiempo
 contP1 = 0;                 // Establecemos el contaador a cero
 contP2 = 0;                 // Establecemos el contaador a cero

 // Comprobamos que la velocidad del juego no sea demasiado alta
 if (freqJuego < 50)
   {
   Ganador();
   }

 // Disminuimos tiempos
  freqJuego = (freqJuego - 10);
  freqLed = (freqLed - 4);

 // Encendemos un LED y comprobamos si
 // pulsa durante el LED encendido el jugador correcto
 while ((time2 - time) <= freqLed)
 {
   time2 = millis();
   if ((numAl % 2) == 0)    // Led Player 1
     {
       digitalWrite(pinLedP1, HIGH);
       digitalWrite(pinLedP2, LOW);

       estadoP1 = digitalRead(botonP1);
       estadoP2 = digitalRead(botonP2);

       if ((estadoP1 == true) & (contP1 == 0))
            {
               BienP1();
            }

      if ((estadoP2 == true) & (contP2 == 0))
           {
               P2Error();
           }
       }  

   else   // Led Player 2
     {
        digitalWrite(pinLedP1, LOW);
        digitalWrite(pinLedP2, HIGH);

        estadoP1 = digitalRead(botonP1);
        estadoP2 = digitalRead(botonP2);

        if ((estadoP2 == true) & (contP2 == 0))
           {
               BienP2();
           }

        if ((estadoP1 == true) & (contP1 == 0))
           {
               P1Error();
           }
     }
 }

// Apagamos los LED
digitalWrite(pinLedP1, LOW);
digitalWrite(pinLedP2, LOW);  

//Comprobamos que nadie pulse mientras estan apagados
time = millis();
 while ((time2 - time) <= freqJuego)
 {
       time2 = millis();
       estadoP1 = digitalRead(botonP1);
       estadoP2 = digitalRead(botonP2);
      if ((estadoP1 == true) & (contP1 == 0))
           {
               P1Error();
           }

      if ((estadoP2 == true) & (contP2 == 0))
           {
               P2Error();
           }
   }
}

// Rutina para comprobar si ha gandao P1
void GanaPlayer1()
  {
    if (grados == 170)
        {
          digitalWrite(pinLedAciertoP1, HIGH);
          digitalWrite(pinLedAciertoP2, LOW);
          digitalWrite(pinLedErrorP1, LOW);
          digitalWrite(pinLedErrorP2, LOW);
          Ganador();
        }
  }

// Rutina para comprobar si ha gandao P2
void GanaPlayer2()
 {
   if (grados == 10)
        {
          digitalWrite(pinLedAciertoP1, LOW);
          digitalWrite(pinLedAciertoP2, HIGH);
          digitalWrite(pinLedErrorP1, LOW);
          digitalWrite(pinLedErrorP2, LOW);
          Ganador();
        }
  }

// Rutina cuado pulsa correctamente P1
void BienP1()
 {
          contP1++;
          grados = (grados + 10);
          servo1.write(grados);
          digitalWrite(pinLedErrorP1, LOW);
          digitalWrite(pinLedAciertoP1, HIGH);
          GanaPlayer1();
 }

// Rutina cuado pulsa correctamente P2
void BienP2()
 {
          contP2++;
          grados = (grados - 10);
          servo1.write(grados);
          digitalWrite(pinLedErrorP2, LOW);
          digitalWrite(pinLedAciertoP2, HIGH);
          GanaPlayer2();
 }

// Rutina cuado pulsa mal P1
void P1Error()
 {
          contP1++;
          grados = (grados - 10);
          servo1.write(grados);
          digitalWrite(pinLedAciertoP1, LOW);
          digitalWrite(pinLedErrorP1, HIGH);
          GanaPlayer2();
 }

// Rutina cuado pulsa mal P2
void P2Error()
 {
          contP2++;
          grados = (grados + 10);
          servo1.write(grados);
          digitalWrite(pinLedAciertoP2, LOW);
          digitalWrite(pinLedErrorP2, HIGH);
          GanaPlayer1();
 }

// Rutina cuando alguien gana el juego
void Ganador()
 { 

  for (rep1=0; rep1<3; rep1++)
    {
      servo1.write(0);
      for (rep2=10; rep2<250; rep2++)
         {
            analogWrite(pinLedGeneral, rep2);
            delay(3);
          }
      servo1.write(179);
      for (rep2=250; rep2>10; rep2--)
         {
         analogWrite(pinLedGeneral, rep2);
         delay(3);
         }
    }
   digitalWrite(pinLedAciertoP1, LOW);
   digitalWrite(pinLedAciertoP2, LOW);
   digitalWrite(pinLedErrorP1, LOW);
   digitalWrite(pinLedErrorP2, LOW);
   digitalWrite(pinLedGeneral, LOW);
   grados = (90);
   servo1.write(grados);
   delay(5000);
   freqJuego = 100;
   freqLed = 500;
 }

¡Bienvenido al Foro Arduino!
Hay una página de foro especial para idiomas que no sean el inglés.
http://forum.arduino.cc/index.php?board=32.0

¡Usted puede ser que tenga una mejor suerte conseguir una respuesta allí!

Los dos switchs deben estar configurados con resistencias pull-down asi, verifica