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!