Go Down

Topic: Problemas con mi SKETCH (Read 271 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy