En este tutorial aprenderás a programar un carrito controlado con un joystick virtual. Implementaremos funciones para mover el carrito en todas las direcciones utilizando dos motores.
El objetivo es que comprendas cómo controlar motores DC, crear funciones personalizadas para cada movimiento, y vincularlas con un widget de joystick en el tablero de control.


Paso 1: Agregar ciclo infinito

El ciclo infinito (while) es la base de todo programa interactivo: permite que el sistema esté siempre escuchando y ejecutando instrucciones sin detenerse.
Esto simula el “loop” continuo de los microcontroladores.

Ver animación

Paso 2: Declarar motor 1 en los pines 2, 3 y 4

Aquí declaramos el Motor1 conectado a los pines digitales 2, 3 y 4.
Estos tres pines controlan la dirección y velocidad del motor mediante un driver L298N o similar.

Ver animación

Paso 3: Declarar motor 2 en los pines 5, 6 y 7

Ahora añadimos el Motor2 en los pines 5, 6 y 7.
Este segundo motor complementará el movimiento del carrito, permitiendo giros y traslación.

Ver animación

Paso 4: Declarar función adelante

Creamos una función llamada “adelante” que contendrá el código para mover el carrito hacia adelante.
Las funciones nos permiten organizar el código y reutilizarlo fácilmente.

Ver animación

Paso 5: Declarar función atrás

Creamos una función llamada “atras” que contendrá el código para mover el carrito hacia atrás.
Esta función invertirá la dirección de ambos motores.

Ver animación

Paso 6: Declarar función derecha

Creamos una función llamada “derecha” que permitirá girar el carrito hacia la derecha.
Para girar, los motores deben moverse en direcciones opuestas.

Ver animación

Paso 7: Declarar función izquierda

Creamos una función llamada “izquierda” que permitirá girar el carrito hacia la izquierda.
Similar a la derecha, pero con las direcciones de los motores invertidas.

Ver animación

Paso 8: Declarar función detener

Creamos una función llamada “detener” que detendrá completamente el movimiento del carrito.
Esta función pondrá la velocidad de ambos motores en cero.

Ver animación

Paso 9: Asignar velocidad positiva en ambos motores para ir adelante

Dentro de la función “adelante”, asignamos una velocidad positiva de 50 a ambos motores.
Esto hace que ambas ruedas giren en la misma dirección, moviendo el carrito hacia adelante.

Ver animación

Paso 10: Asignar velocidad negativa en ambos motores para ir atrás

Dentro de la función “atras”, asignamos una velocidad negativa de -50 a ambos motores.
Los valores negativos invierten la dirección de giro, moviendo el carrito hacia atrás.

Ver animación

Paso 11: Asignar velocidad contraria en ambos motores para ir a la derecha

Para girar a la derecha, asignamos velocidad positiva (50) al Motor1 y velocidad negativa (-50) al Motor2.
Esto hace que el carrito gire sobre su propio eje hacia la derecha.

Ver animación

Paso 12: Asignar velocidad contraria en ambos motores para ir a la izquierda

Para girar a la izquierda, asignamos velocidad negativa (-50) al Motor1 y velocidad positiva (50) al Motor2.
El carrito girará sobre su eje hacia la izquierda.

Ver animación

Paso 13: Asignar velocidad en 0 para detener ambos motores

En la función “detener”, asignamos velocidad 0 a ambos motores.
Esto frena completamente el carrito, deteniendo cualquier movimiento.

Ver animación

Paso 14: Dibujar joystick en el tablero

Agregamos un widget de joystick en el tablero de control.
Este componente visual nos permitirá controlar el carrito de manera intuitiva con botones direccionales.

Ver animación

Paso 15: Asignar funciones al presionar cada uno de los botones del joystick

Configuramos el joystick para que al presionar cada dirección (arriba, abajo, izquierda, derecha) ejecute la función correspondiente.

  • Arriba → función “adelante”
  • Abajo → función “atras”
  • Izquierda → función “izquierda”
  • Derecha → función “derecha”
Ver animación

Paso 16: Asignar la función detener al soltar cualquiera de los botones del joystick y probar

Finalmente, configuramos el joystick para que al soltar cualquier botón se ejecute la función “detener”.
Esto hace que el carrito se detenga automáticamente cuando dejamos de presionar, imitando el comportamiento de un control remoto real.

Ver animación

Interfaz interactiva


Conclusión:
Has creado un carrito con control remoto completo usando bloques de programación.
Este proyecto integra múltiples conceptos avanzados:

  • Control de motores DC con driver de potencia.
  • Creación de funciones personalizadas para organizar el código.
  • Uso de widgets interactivos (joystick) para control en tiempo real.
  • Lógica de eventos de presión y liberación para un control preciso.

¡Ahora puedes experimentar modificando las velocidades, agregando más funciones o incluso añadiendo sensores para evitar obstáculos!