martes, 25 de junio de 2019

El programa motores003.sb2

El programa motores003.sb2 (descargar aquí) tiene un funcionamiento bastante sencillo.

Pretende emular las órdenes como si se tratara de un reloj, según la imagen a continuación:
De este modo, cuando queremos que el vehículo vaya
hacia adelante, la dirección será 12,
hacia atrás, la dirección será 6,
hacia la derecha, la dirección será 3,
hacia la izquierda, la dirección será 9,
esté parado, la dirección será 0.

Todo esto se programa en un bloque nuevo que se crea para este propósito:
NOTA IMPORTANTE: Tanto los bloques como las variables que crea el usuario no deben contener tildes (acentos), espacios, ni caractéres extraños (?¿!¡();&$%@), puntos ni comas.

(clic en la imagen para ampliar)

Así, se configurarán tanto los motores del lado derecho como los del lado izquierdo, siendo
0 el valor que hace que los motores de un lado se paren,
1 el valor que hace que los motores de un lado vayan hacia delante,
-1 el valor que hace que los motores de un lado vayan hacia atrás.

Por ejemplo, si queremos girar a la derecha (3), los motores del lado izquierdo deben ir hacia adelante (1).
Pero los del lado derecho pueden estarse quietos (0), de modo que se describa una curva abierta, o bien pueden ir hacia atrás (-1) de manera que el coche gira sobre sí mismo.
Ambas opciones son válidas y depende del criterio del programador el utilizar uno u otro método.

Como se puede ver, el bloque direccion llama a su vez a otros dos bloques que también se crearon desde cero. Se programan según lo siguiente:


(clic en la imagen para ampliar)

Estos bloques permiten que el coche solo envíe señal de funcionamiento cuando el número es distinto de cero (1 o -1) y están programados de tal modo que distinguen si el sentido de giro de cada uno de los pares de motores es hacia un lado o hacia otro, según lo indicado en el bloque de direccion.

Una vez se tienen las bases para la movilidad del coche, se confecciona el programa principal. En el caso de motores003.sb2 es el siguiente:

(clic en la imagen para ampliar)

Al principio se indica la potencia a transmitir a los motores en una escala de 0 a 255 que nada tiene que ver con valores reales de tensión o voltaje. Se para el coche (direccion 0) y se comienza el programa.

Dicho programa llama al bloque de dirección, que será el que configure en cada momento el sentido de giro de los motores. No obstante, tras haberlos configurado, es necesario incluir un bloque de espera por un tiempo determinado, para que dicha acción pueda ejecutarse mínimamente.

En el caso de la direccion 12 no se incluye porque el tiempo es indefinido hasta que se encuentra con un obstáculo. Pero en las otras indicaciones, si no se incluyera no tendría validez ninguna puesto que se aplicaría por un intervalo tan corto de tiempo que no llegaría a ser apreciable.

En cuanto a la forma de esquivar el obstáculo, puede hacerse siempre hacia el mismo lado (derecha o izquierda) o bien de manera aleatoria. Para ello la dirección puede oscilar entre los valores 3 y 9 según lo dispuesto en el programa. Las posibles combinaciones son:
3 + (6 x 0) = 3 (derecha)
3 + (6 x 1) = 9 (izquierda)
Si se tomara al azar entre 3 y 9 habría valores (4,5,6,7,8) que no se recogen en el bloque de direccion y que no harían más que retrasar el funcionamiento del programa, consumiendo energía innecesariamente.

En cuanto al sensor, las informaciones apuntan a que el rango de medición es de 2 cm a 450 cm. No obstante, es recomendable no abusar de este rango y buscar valores intermedios. Los 20 cm indicados en el programa principal pueden ser un buen valor para evitar el choque contra el obstáculo.


Autor: Francisco Javier Bastante Flores