[SOLUCIONADO] Ayuda con programacion de una funcion


hola.
el caso es que me estoy haciendo un pequeño robot con un sensor de ultrasonidos, y la idea es que vaya para alante, y cuando la distancia sea menor que 5cm, dé la vuelta.
estoy usando para ello un sensor de ultrasonidos y dos motores controlados con un l293.
he hecho dos funciones, una que se llama adelante() que mueve los dos motores hacia alante, y otra que se llama vuelta(), que mueve uno para cada lado.

tengo más o menos claro como hacerlo, pero me falla la funcion de dar la vuelta, ya que quiero que esta funcion se ejecute durante x segundos, y luego se ejecute la de ir para adealnte. es decir:

on>>> distancia mayor que 5 >>> adelante
   >>>>distancia menor que 5>>>vuelta >>>adelante (así sucesivamente)

el problema que veo es que la funcion vuelta() se ejecuta mientras la distancia sea menor 5, por lo que si hay un obstáculo de frente, el robot empezará dar la vuelta, y parará de darla cuando ya no encuentre el obstáculo, mientras que yo lo que quiero es que la dé durante 3 segundos (es lo que tarda el robot en girar 180º lentamente) y entonces se pregunte si sigue adelante.

no sé si me explicado bien. alguien tiene alguna idea sobre cómo hacerlo?
os pego el código que tengo pensado:



code: [select]
void loop()
{
 dist = ultrasonic.ranging(cm);

 
 //modo de dar la vuelta
if (dist > 5)
{
adelante();
}

else
{
vuelta();
}

}


void adelante(){

digitalwrite(motor1a, high);
digitalwrite(motor1b, high);
analogwrite(motor1run, 255);

digitalwrite(motor2a, high);
digitalwrite(motor2b, high);
analogwrite(motor2run, 255);
}

void vuelta(){
 //apaga motores
 analogwrite(motor1run, low);
 analogwrite(motor2run, low);
delay(2000);  
// vuelta despacio
 digitalwrite(motor1a, low);
digitalwrite(motor1b, high);
analogwrite(motor1run, 100);

digitalwrite(motor2a, high);
digitalwrite(motor2b, low);
analogwrite(motor2run, 100);

//espera 5
delay(5000);






}




muchas gracias de antemano!!!

¿por que no cambias el valor del último delay por 3000?
saludos


Arduino Forum > International > Español (Moderators: surbyte, Hector_A) > [SOLUCIONADO] Ayuda con programacion de una funcion


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial