viernes, 10 de noviembre de 2017

XboxRC24 Transmitter Un mando Radio Control con corazón Arduino (Parte 2)

Buenas Ardublogeros!!!
La primera versión del software ya esta lista así que en esta entrada voy a explicar el código ya que esta vez he optado por estructurar el software por pestañas como vimos en la entrada anterior: Ejemplos Arduino: Trabajando con pestañas en el Sketch.
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:

  1. XboxRC_v0.3_Infotronikblog.ino
  2. Calibracion.ino
  3. Caracteres.ino
  4. Comunicacion.ino
  5. LCD.ino
  6. Memoria.ino
  7. Menu.ino
  8. Modo_tanque.ino


XboxRC_v0.3_Infotronikblog.ino :

En este archivo se encuentra el los #include de las librerias, las variables generales, el setup y el loop. Es el archivo principal del programa.

Calibracion.ino:


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

Guardaremos los datos en la memoria EEPROM con la instrucción EEPROM.update()


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:

Esta es la pestaña mas importante, es la encargada de enviar y recibir los datos.
las instrucciones radio.write() y radio.read() de la librería RF24.h

radio.write() envía un array de 12 datos, los 6 analógicos y los 6 botones.
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:
  • 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
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