
Es algo que ya había visto en algún proyecto y no le había hecho mucho caso, pero en programas donde hay muchas lineas creo que es algo fundamental para poder organizar el programa. Otra de las ventajas es que podemos reutilizar el código para otros proyectos solo importando el *.ino y añadiéndolo al proyecto.
XboxRC24 Transmitter esta estructurado en 8 pestañas, son las siguientes:
- XboxRC_v0.3_Infotronikblog.ino
- Calibracion.ino
- Caracteres.ino
- Comunicacion.ino
- LCD.ino
- Memoria.ino
- Menu.ino
- Modo_tanque.ino
XboxRC_v0.3_Infotronikblog.ino :

Calibracion.ino:

Calibración es el apartado encargado de establecer los máximos y mínimos de los joysticks y gatillos.

Caracteres.ino:
Como la memoria del LCD solo nos permite tener 8 caracteres personalizados y para este proyecto quería tener algunos más, he creado esta pestaña con los caracteres predefinidos que se cargaran antes de entrar a la función a la que estén asignados.
Creamos los caracteres con la instrucción lcd.createChar() de la librería LiquidCrystal_I2C.h
Comunicacion.ino:
las instrucciones radio.write() y radio.read() de la librería RF24.h
radio.read() recibe 5 datos que aun están por definir pero que incluirán voltaje, temperatura, etc...
LCD.ino:
El mando cuenta con una pantalla LCD 16x2 con un módulo de control i2C y esta pestaña como su nombre indica muestra en el LCD los datos enviados y recibidos, las posiciones de los joysticks, estado de la transmisión de los datos, etc...
Memoria.ino:
Memoria se encarga de cargar y borrar los datos de la memoria EEPROM. Las instrucciones que utiliza son:
EEPROM.read() un bucle for leerá los bancos de memoria y los cargara en el array varJoyMin y varJoyTop.
EEPROM.write() con un bucle for pondremos a 0 los bancos de memoria.
Menu.ino:
Los diferentes menús están en esta pestaña por el momento son dos:
Modo_tanque.ino:
Esta pestaña es para conducir un vehículo con tracción de oruga. Este lo controlaremos mediante el gatillo derecho para acelerar y el joystick izquierdo para las diferentes direcciones. También tenemos configurado el botón A para encender y apagar luces u otro dispositivo.
LCD.ino:
El mando cuenta con una pantalla LCD 16x2 con un módulo de control i2C y esta pestaña como su nombre indica muestra en el LCD los datos enviados y recibidos, las posiciones de los joysticks, estado de la transmisión de los datos, etc...
Memoria.ino:
Memoria se encarga de cargar y borrar los datos de la memoria EEPROM. Las instrucciones que utiliza son:
EEPROM.read() un bucle for leerá los bancos de memoria y los cargara en el array varJoyMin y varJoyTop.
EEPROM.write() con un bucle for pondremos a 0 los bancos de memoria.
Menu.ino:
Los diferentes menús están en esta pestaña por el momento son dos:
- void menu() Aquí tenemos los diferentes opciones que podemos controlar. Lo seleccionaremos con "switch case" y apuntaran a las pestañas donde estarán predefinidos los diferentes vehículos.
- void menuCal() Con este menu nos movemos entre la configuración de las diferentes entradas analógicas y a punta a las funciones almacenadas en la pestaña "Calibracion.ino".

Modo_tanque.ino:
Esta pestaña es para conducir un vehículo con tracción de oruga. Este lo controlaremos mediante el gatillo derecho para acelerar y el joystick izquierdo para las diferentes direcciones. También tenemos configurado el botón A para encender y apagar luces u otro dispositivo.
![]() |
XboxRC24 botones predefinidos para el modo tanque |
Esta versión esta aún en desarrollo así que puede que tenga algunos bugs, pero a la misma vez que iré añadiendo vehículos, también iré puliendo el código ;)
**V.05**
Añadido el modo coche
Añadido Debug.ino para la visualización en el monitor serial
--Datos enviados/recibidos.
--Estado de la memoria: valores mínimos y máximos.
Mejora en la función Calibración
Espero que os guste y que os sea de utilidad tanto el programa en si como la parte de código que podáis utilizar para vuestros proyectos, Saludos!!!
No hay comentarios :
Publicar un comentario