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:

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 :

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 ;)

Descargar XboxRC24 v0.3

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!!!

Fuente: este post proviene de InfotronikBlog, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
Creado:
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Buenas a todos!!! Esta publicación va con un poco de retraso... ya tenía la Raspberry Pi 2 desde hacia bastante tiempo, pero como la tenia en otros usos y no he podido hacerle una entrada en condicion ...

Recomendamos

Relacionado

Arduino i2C Joystick ...

Buenas a todos!!! Desde siempre me ha gustado el radio control, coches, aviones, barcos... todo lo que se pueda controlar remotamente, simplemente me encanta. Arduino ha hecho un gran trabajo con esto, ha puesto a disposición del consumidor muchos módulos con un coste realmente bajo y un efectividad realmente alta. Ya no solo por que puedas construir tu propio emisor/receptor (como va a ser este c ...

Arduino Añadir fichero Ejemplos ...

Muy buenas a todos!!! A todos nos ha pasado que cuando ya le pillamos el truquillo a esto de Arduino hacemos programas más y más grandes, añadiendo funciones extras haciendo que se sumen lineas hasta casi volvernos locos buscando esa linea... Para solucionar esto y hacer que nuestro código este mucho mejor estructurado. Podemos solucionar esto de varias maneras. Una de ellas seria con Sketch que v ...

Arduino Joystick Robot Arm ...

Buenas a todos!!! Como ya publique hace un tiempo, tenia este brazo robot de 4 ejes hecho con una impresora 3D, en la primera entrada no publique código por un problema que tuve con el PC, pero esta vez va completo. Bueno todo empezó cuando buscando algo, vaya usted a saber que... encontré un viejo gamepad USB, (a decir verdad encontré varios) y se me ocurrió la idea de usar los thumbsticks o joys ...