Go Down

Topic: Programar Loop (Read 724 times) previous topic - next topic

Eduort

Hola, estoy haciendo un proyecto que es un brazo robot, al cual le quiero poner secuencias, hasta ahora lo que logre fue programar la secuencia y que al presionar el boton la haga una ves, pero el problema es que necesito que al oprimir el boton iniciar la secuencia y se siga repitiendo hasta que se oprima otro boton para que se detenga, sin embargo no he encontrado la forma de hacer esto, este es el codigo que tengo
Code: [Select]
if (Serial.available() > 0) {         
    data = Serial.read();
    }
   if ((data == 'A') || (data == 'a')) {
   pos1 = 135;
   servo1.write(pos1);         
   delay(2500);   
   pos2 = 90;
   servo2.write(pos2);         
   delay(2500); 
   pos3 = 90;
   servo3.write(pos3);         
   delay(2500);
   pos4 = 165;
   servo4.write(pos4);         
   delay(2500); 
   pos1 = 90;
   servo1.write(pos1);         
   delay(2500); 
   pos2 = 75;
   servo2.write(pos2);         
   delay(2500);   
   pos4 = 120;
   servo4.write(pos4);         
   delay(2500); 
   }

Agradeceria mucho si me pueden pasar un tutorial o decir como puedo hacer lo que busco, es todo y gracias de antemano.

mijaviromero

tengo casi el mismo problema que tu,
quiero conseguir que un rele se pare del todo para que deje actuar al otro
ya que ambos siguen funcionando a la vez y me consumen los 5 voltios de la placa
ydejan de funcionar.
gracias

iceman_f5



Code: [Select]
if (Serial.available() > 0) {         
    data = Serial.read();
    }
   if ((data == 'A') || (data == 'a')) {
   pos1 = 135;
   servo1.write(pos1);         
   delay(2500);   
   pos2 = 90;
   servo2.write(pos2);         
   delay(2500); 
   pos3 = 90;
   servo3.write(pos3);         
   delay(2500);
   pos4 = 165;
   servo4.write(pos4);         
   delay(2500); 
   pos1 = 90;
   servo1.write(pos1);         
   delay(2500); 
   pos2 = 75;
   servo2.write(pos2);         
   delay(2500);   
   pos4 = 120;
   servo4.write(pos4);         
   delay(2500); 
   }
  else
  {
  delay(200);
  }





¿Quizá asi?

noter

Si he entendido bien tu cuestión, creo que la solución no es difícil:
usa una variable general o estática "activo" que te indique si la secuencia se está realizando o no.
byte activo=false;

loop(){
if (Serial.read== TECLA1) activo=true;
else if (Serial.read==TECLA2) activo=false;
if (activo){...... secuencia.........}

}

iceman_f5

Pues si, lo ha escrito noter hace lo que quieres.
Lo que escribí yo, hace más bien poco; solo un retardo en caso de no cumplirse que se haya pulsado 'A' o 'a'.

Go Up