Go Down

Topic: Problemas con mi SKETCH (Read 211 times) previous topic - next topic

Skaven7

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????

Derty-2

#1
Jun 28, 2014, 12:33 am Last Edit: Jun 28, 2014, 06:17 pm by Derty-2 Reason: 1
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.

Go Up