Pages: [1]   Go Down
Author Topic: Problemas con mi SKETCH  (Read 131 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: June 28, 2014, 11:17:40 am by Derty-2 » Logged

Pages: [1]   Go Up
Jump to: