Problemas con mi SKETCH

Hola gente. Antetodo felicitar a la peña del foro que son unos maquinas. Bien, voy al grano. Estoy haciendo una maqueta de una puerta automatica con el siguiente SKETCH

// Programa para control de Porton Automatico
#include <Servo.h>
Servo mi_servo;// miservo pa8ra controlar el servomotor
int but = 8; //pin para el pulsador
int Angulo = 0;// Vriable para el valor inicial del servo
int servo = 9;// variable para leer el valor del pin pwm
//Sensores IR Interructor de Proximidad
int A = 4;
int B = 7;
int C = 12;
//variables para guardar el valor leido por el sensor y el pulsador
int sensorA;
int sensorB;
int sensorC;
int butState;

void setup()
{
mi_servo.attach (9); (mi_servo); // asocia el servo en pin 9 al objeto servo
pinMode(A,INPUT);
pinMode(B,INPUT);
pinMode(C,INPUT);
pinMode(but, INPUT);
digitalWrite(servo,LOW);

}

void loop()
{
sensorA=digitalRead(A);//lectura del sensor A
sensorB=digitalRead(B); //lectura del sensor B
sensorC=digitalRead(C); //lectura del sensor c
mi_servo.write(Angulo);//posicion 0
butState = digitalRead(but);//lectura del pulsador

if (butState == HIGH) { //si el pulsador esta en alto
mi_servo.write(Angulo); delay(100); mi_servo.write(5); delay(100);
mi_servo.write(10); delay(100); mi_servo.write(15); delay(100);
mi_servo.write(20); delay(100); mi_servo.write(25); delay(100);
mi_servo.write(30); delay(100); mi_servo.write(35); delay(100);
mi_servo.write(40); delay(100); mi_servo.write(45); delay(100);
mi_servo.write(50); delay(100); mi_servo.write(55); delay(100);
mi_servo.write(60); delay(100); mi_servo.write(65); delay(100);
mi_servo.write(70); delay(100); mi_servo.write(75); delay(100);
mi_servo.write(80); delay(100); mi_servo.write(85); delay(100);
mi_servo.write(90); delay(100); mi_servo.write(95); delay(100);
mi_servo.write(100); delay(100); mi_servo.write(105); delay(100);
mi_servo.write(110); delay(100); mi_servo.write(115); delay(100);
mi_servo.write(120); delay(100); mi_servo.write(125); delay(100);
mi_servo.write(130); delay(100); mi_servo.write(135); delay(100);
mi_servo.write(140); delay(100); mi_servo.write(145); delay(100);
mi_servo.write(150); delay(100); mi_servo.write(155); delay(100);
mi_servo.write(160); delay(100); mi_servo.write(165); delay(100);
mi_servo.write(170); delay(100); mi_servo.write(175); delay(100);
mi_servo.write(180); delay(20000);

mi_servo.write(180); delay(100);
mi_servo.write(175); delay(100); mi_servo.write(170); delay(100);
mi_servo.write(165); delay(100); mi_servo.write(160); delay(100);
mi_servo.write(155); delay(100); mi_servo.write(150); delay(100);
mi_servo.write(145); delay(100); mi_servo.write(140); delay(100);
mi_servo.write(135); delay(100); mi_servo.write(130); delay(100);
mi_servo.write(130); delay(100); mi_servo.write(125); delay(100);
mi_servo.write(120); delay(100); mi_servo.write(115); delay(100);
mi_servo.write(110); delay(100); mi_servo.write(105); delay(100);
mi_servo.write(100); delay(100); mi_servo.write(95); delay(100);
mi_servo.write(90); delay(100); mi_servo.write(85); delay(100);
mi_servo.write(80); delay(100); mi_servo.write(75); delay(100);
mi_servo.write(70); delay(100); mi_servo.write(65); delay(100);
mi_servo.write(60); delay(100); mi_servo.write(55); delay(100);
mi_servo.write(50); delay(100); mi_servo.write(45); delay(100);
mi_servo.write(40); delay(100); mi_servo.write(35); delay(100);
mi_servo.write(30); delay(100); mi_servo.write(25); delay(100);
mi_servo.write(20); delay(100); mi_servo.write(15); delay(100);
mi_servo.write(10); delay(100); mi_servo.write(5); delay(100);
mi_servo.write(Angulo);delay(300);
}

//si los sensores estan 1 el porto se abrira
if(sensorA==1 && sensorB==1){
mi_servo.write(Angulo); delay(100); mi_servo.write(5); delay(100);
mi_servo.write(10); delay(100); mi_servo.write(15); delay(100);
mi_servo.write(20); delay(100); mi_servo.write(25); delay(100);
mi_servo.write(30); delay(100); mi_servo.write(35); delay(100);
mi_servo.write(40); delay(100); mi_servo.write(45); delay(100);
mi_servo.write(50); delay(100); mi_servo.write(55); delay(100);
mi_servo.write(60); delay(100); mi_servo.write(65); delay(100);
mi_servo.write(70); delay(100); mi_servo.write(75); delay(100);
mi_servo.write(80); delay(100); mi_servo.write(85); delay(100);
mi_servo.write(90); delay(100); mi_servo.write(95); delay(100);
mi_servo.write(100); delay(100); mi_servo.write(105); delay(100);
mi_servo.write(110); delay(100); mi_servo.write(115); delay(100);
mi_servo.write(120); delay(100); mi_servo.write(125); delay(100);
mi_servo.write(130); delay(100); mi_servo.write(135); delay(100);
mi_servo.write(140); delay(100); mi_servo.write(145); delay(100);
mi_servo.write(150); delay(100); mi_servo.write(155); delay(100);
mi_servo.write(160); delay(100); mi_servo.write(165); delay(100);
mi_servo.write(170); delay(100); mi_servo.write(175); delay(100);
mi_servo.write(180); delay(10000);

mi_servo.write(180); delay(100);
mi_servo.write(175); delay(100); mi_servo.write(170); delay(100);
mi_servo.write(165); delay(100); mi_servo.write(160); delay(100);
mi_servo.write(155); delay(100); mi_servo.write(150); delay(100);
mi_servo.write(145); delay(100); mi_servo.write(140); delay(100);
mi_servo.write(135); delay(100); mi_servo.write(130); delay(100);
mi_servo.write(130); delay(100); mi_servo.write(125); delay(100);
mi_servo.write(120); delay(100); mi_servo.write(115); delay(100);
mi_servo.write(110); delay(100); mi_servo.write(105); delay(100);
mi_servo.write(100); delay(100); mi_servo.write(95); delay(100);
mi_servo.write(90); delay(100); mi_servo.write(85); delay(100);
mi_servo.write(80); delay(100); mi_servo.write(75); delay(100);
mi_servo.write(70); delay(100); mi_servo.write(65); delay(100);
mi_servo.write(60); delay(100); mi_servo.write(55); delay(100);
mi_servo.write(50); delay(100); mi_servo.write(45); delay(100);
mi_servo.write(40); delay(100); mi_servo.write(35); delay(100);
mi_servo.write(30); delay(100); mi_servo.write(25); delay(100);
mi_servo.write(20); delay(100); mi_servo.write(15); delay(100);
mi_servo.write(10); delay(100); mi_servo.write(5); delay(100);
mi_servo.write(Angulo);delay(5000);

}

}

//fin del Programa

Mi problema esta en el que necesito que ese sensorC cuando este activo y la puerta este abierta a 180º no se cierre la puerta. Pero no se como hacerlo bien, cuando lo pongo como yo creo el servo se vuelve loco y hace cosas raras. Alguien me ayuda a hacerlo????

usa FOR para reducir el código y simplificar.

// Programa para control de Porton Automatico
#include <Servo.h>
Servo mi_servo;// miservo pa8ra controlar el servomotor
int but = 8; //pin para el pulsador
int Angulo = 0;// Vriable para el valor inicial del servo
int servo = 9;// variable para leer el valor del pin pwm
//Sensores IR Interructor de Proximidad
int A = 4;
int B = 7;
int C = 12;
//variables para guardar el valor leido por el sensor y el pulsador
int sensorA;
int sensorB;
int sensorC;
int butState;

void setup()
{
mi_servo.attach (9); (mi_servo); // asocia el servo en pin 9 al objeto servo
pinMode(A,INPUT);
pinMode(B,INPUT);
pinMode(C,INPUT);
pinMode(but, INPUT);
digitalWrite(servo,LOW);

}

void loop()
{
sensorA=digitalRead(A);//lectura del sensor A
sensorB=digitalRead(B); //lectura del sensor B
sensorC=digitalRead(C); //lectura del sensor c
mi_servo.write(Angulo);//posicion 0
butState = digitalRead(but);//lectura del pulsador

if (butState == HIGH) { //si el pulsador esta en alto
for (int Angulo = 0; Angulo < 185; Angulo = Angulo + 5)
{

mi_servo.write(Angulo); delay(100);

}
delay(20000);

espera:
if (sensorC == HIGH) {
goto espera;
}

else {

for (int Angulo = 180; Angulo = 0; Angulo = Angulo - 5)
{

mi_servo.write(Angulo); delay(100);
}
}

delay(300);
}
}

... sigue tu código

pruébalo... a ver, no tengo un servo para probarlo.

soy también novato, espero sea de ayuda.