Go Down

Topic: mutitarea (Read 892 times) previous topic - next topic

tulmot

Pues me a surgido un problema con mi proyecto, es un robot que detecta obstaculos mediante  un sensor sharp, el problema es que necsito que los servomoteres que giran las ruedas, funcionen a la vez que detecta el sensor. Porque ahora lo que me hace es primero detecta luego recorre una distancia hacia adelante, y luego vuelve a detectar pero necesito que haga las dos cosas a la vez. Alguna solución???
El sensor lo tengo conectado a una salida analogica y los servors a las salidas digitales

un saludo y gracias

Las dos cosas a la ves no puedes hacerlas, yo te recomiendo para un robot no utilizar el delay() y utilizar la función millis() y veras que parece que lo haga todo a la vez.

tulmot

Pues gracias
pero entonces las dos funciones son iguales?? vamos que por ejemplo si tengo puesto delay(500) tendria que poner milis (500)??

gracias de nuevo

Sergegsx

mirate el programa qeu viene con arduino, blinkwithoutdelay

nkl_ale

delay sirve para detener la ejecución  : delay(500) para 0.5 segundos.

millis() se usa de otra forma, devuelve el número de milisegundos que hace que se encendió arduino, puedes compararlo con un tiempo anterior y decidir cual de las acciones vas a hacer ahora (detectar , encender / apagar el motor, no hacer nada ...)
compara el funcionamiento de blink y blinkwithoutdelay como dijo Sergegsx.

Heke

Tambien puedes emplear un latch

Dejas el motor con el latch cargado a 1 (significaria ir adelante) hasta que sensor detecte que tiene que parar, con lo cual en ese momento por unos milisegundos dejaria de atender el sensor y cargaria un 0 en el latch.

Por ejemplo.

obviamente emplearia las interrupciones (atachinterrupt)
CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

tulmot

Pues muchas gracias me habeis servido de gra ayuda al final consegui corregir el problema

Go Up