martes, 28 de junio de 2016

Joystick para control de un vehículo con servos de rotación continua - ArduBlock, Bitbloq y mBlock

(Artículo en construcción)

Referencia de programas: 04B, 04C, 04D, 04E (varias pruebas en direcciones diferentes)
 
Arduino IDE 1.0.6 y ArduBlock 20130607 en MAX 6.5 (MAdrid_linuX)



Prepara el montaje:
  • Placa Arduino.
  • JoyStick de 5 cables.
    Tres primeros cables a pin "analógico" 4 (cuidado, en algunas placas están invertidos).
    Cuarto cable a pin analógico 5 señal - Eje y.
    Quinto cable a pin "digital" 7 señal - Apagar leds o parar motores.
  • Pin digital 8 - Servomotor de rotación continua izquierdo.
  • Pin digital 9 - Servomotor de rotación continua derecho.
Ten en cuenta:
  • En las placas con hileras de tres pines conecta los cables empezando normalmente por "ground". Cuidado. En algunas placas los pines están invertidos.
  • No todos los "joystick" tienen el mismo diseño ni reconocen el mismo rango valores; prueba a modificar los valores en el programa si es necesario.
  • Comprueba si tus servomotores están bien calibrados. 
Programa:
  • Crea el programa que se muestra en la imagen.
Prueba:
  1. Pulsa en "Cargar a Arduino".
  2. Acciona el mando en varias direcciones y prueba también a pulsarlo. A veces es necesario pulsar en la posición exacta.
  3. Observa los cambios y describe lo que ha ocurrido.
  4. ¿Qué función tienen las variables "xeje" e "yeje"?
  5. Cambia el nombre de las variables. 
  6. Cambia los valores y los operadores. 
  7. Cambia los pines.
  8. Describe lo que ha ocurrido tras los cambios.
  9. Describe lo que crees que hace cada bloque paso a paso.
  10. Describe 3 posibles usos de este montaje en la vida real.
Investiga:
  • Investiga nuevas posibilidades cambiando valores y bloques.
Bitbloq Offline v1.0.3 en MAX 8.0 (MAdrid_linuX)

Montaje:

Aviso.En este caso, se ha utilizado el joystick que comercializa bq. La  configuración por defecto, rango de valores y orientación de ejes con respecto a los cables de conexión pueden ser diferentes al de otros joysticks del mercado.

De hecho, se ha probado esta misma programación con un joystick diferente y el comportamiento de los servos cambia. Se comentan los motivos al final del programa.
 

Programas:

Hay una diferencia importante con respecto al proyecto anterior. Vamos a hacer que se puedan realizar curvas más cerradas. Para ello, al girar a la derecha e izquierda, en vez de parar uno de los servos, haremos que gire en dirección contraria al otro.
  • Con joystick comercializado por bq (3 x 3 cables):
  • Con joystick diferente procedente del mercado (5 cables): 
Como se hizo en el ejemplo de Ardublock, ha sido necesario inicializar a 1 el valor del pulsador del joystick (pin digital 7), pues no viene configurado así por defecto.
 

Además, los ejes X e Y tienen otra orientación respecto a los cables; el joystick debe colocarse con los cables hacia un lado en vez de hacia adelante para que interprete bien las órdenes. Habría que cambiar la programación si queremos manejar el joystick con los cables mirando hacia adelante, que como se hizo en el caso de Ardublock.

mBlock con mBot (mCore) en MAX 9.0 (MAdrid_linuX) 64 bits (conectado y autónomo)
 
En este caso usamos los dos motores DC del kit mBot en los conectores M1 y M2.

Como en el ejemplo del artículo anterior, debemos utilizar el módulo externo joystick conectado en el puerto 4, aunque por lo que se ha probado sólo funciona usando el bloque de ejecución mediante bandera verde.
 
Se ofrecen las alternativas para programarlo de forma autónoma utilizando el mando IR de control a distancia o el módulo de botonera de 4 bototones conectado en el puerto 4).

Aviso:

En este caso, se ha observado que es conveniente tener las pilas conectadas durante la carga del programa para minimizar el número de fallos durante la carga. A veces ha ocurrido también con otros programas, por lo que se recomienda probarlo en caso de observar fallos.

  • Joystick externo:

  • Mando de control a distancia:

  • Botonera (módulo externo de 4 botones):

 

No hay comentarios: