Go Down

Topic: mutitarea (Read 844 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

JRodrigo

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
* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

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