Que que es un 7-segment panel y para que vale? mejor verlo en funcionamiento
Como veis podemos exportar la frecuencia de radios de navegacion y comunicaciones a paneles externos.
Si estais pensando en exportar modos del UFC del F18 y otros aparatos me temo que no sirve pues esos envian letras no solo numeros y la libreria LedControl( y el propio panel) solo puede representar numeros y unas pocas letras (a,b,c,d,e,f,h,l,p) para hacer eso necesitariais otro tipo de panel (y de libreria claro)
Bueno empecemos...
Lista de la compra
DCS Bios Hub
La ultima version de DCS-Bios, ahora trae un instalador lo ejecutamos y aparecera en la barra de procesos, luego con el boton derecho pulsamos en "open web interface" y nos abrira una ventana en el navegador desde donde podemos controlarlo.
Libreria DCS Bios para añadirla al IDE de Arduino (el interfaz grafico con el que programamos la placa)
Libreria LedControl que sera la que maneje nuestro panel.
7 segment panel con chip MAX7219
Debe de llevar ese chip para que la libreria lo controle, los hay de varios tamaños y colores pero para radios debe de tener por lo menos 6 digitos (5 digitos frecuencias + punto decimal)
Una placa Arduino o clon (una Arduino Uno esta bien para empezar) y el software de Arduino
Una vez instalado el soft y drivers de Arduino abrimos un nuevo proyecto.
Antes de nada tenemos que incluir las librerias necesarias para que nuestra placa Arduino pueda controlar DCS-Bios y el panel de 7 segmentos.
Vamos a "Programa/Añadir libreria .zip" y añadimos las librerias "Dcs Bios" y "Ledcontrol" que descargamos antes.Una vez acabado deberian de aparecer en nuestro listado de librerias como aparece aqui...

Ahora abrimos DCS-Bios Hub (recordad arranca como un proceso y hay que abrir la interfaz web)
Vamos a la seccion "plugins"

Esta es mi seccion de plugins, en ellas se ven los aparatos que DCS Bios esta listo para manejar.En vuestro caso estara vacia, no hemos añadido ningun modelo aun.
Para hacerlo pinchamos en el enlace que pone "Open the plugin catalog" , lo vemos vacio porque tenemos que desmarcar la opcion "only show recommended plugins (0)", ahora si aparecen un monton de modulos!
Al seleccionar un modulo se añade a DCS-bios, entonces podemos ir a "Control Reference" y lo veremos alli.Al seleccionar un aparato en esta seccion se abre un menu con los diversos sistemas que tiene como radios,paneles de armamento etc... y dentro de ellos veremos el codigo para controlar cada boton, switch y luz de cabina.
Tambien hay un codigo "generico" para exportar informacion a pantallas de diverso tipo.
Como hay un monton de paneles distintos (7 segmentos, 18x2 caracteres, oled...) los creadores de DCS-Bios han decidido que este envie la informacion de radios y paneles en un "streaming" de datos y que las librerias de cada tipo de panel se las apañen para mostrarlo.
----CONTINUARA---
p.d.
Dejo aqui el codigo para exportar la informacion del panel de radio NAV del Huey por si quereis ir echandole un vistazo.
// Incluimos librerias DcsBios y LedControl para 7-segment panel con chip Max7219
#define DCSBIOS_IRQ_SERIAL
#include <LedControl.h>
#include <DcsBios.h>
/* Creamos funcion para configurar un 7-segment panel. Pines DIN(12) CLK(11) CS(10) (1)panel */
LedControl lc=LedControl(12,11,10,1);
//Funcion Huey VHF Nav Freq
void onVhfnavFreqChange(char* newValue) {
/* your code here */
lc.setChar(0,7,'-',false);
lc.setChar(0,6,newValue[0],false);
lc.setChar(0,5,newValue[1],false);
lc.setChar(0,4,newValue[2],false);
lc.setChar(0,3,newValue[3],false);
lc.setChar(0,2,newValue[4],false);
lc.setChar(0,1,newValue[5],false);
lc.setChar(0,0,'-',false);
}
DcsBios::StringBuffer<6> vhfnavFreqBuffer(0x14f0, onVhfnavFreqChange);
void setup() {
DcsBios::setup();
// put your setup code here, to run once:
// MAX7219 INITIALISATION
lc.shutdown(0,false); //turn on the display
lc.setIntensity(0,8);//set the brightness
lc.clearDisplay(0); //clear the display
// codigo boot personalizado antes de conexion
lc.setChar(0,7,'-',false);
lc.setChar(0,6,'-',false);
lc.setChar(0,5,'E',false);
lc.setChar(0,4,'5',false);
lc.setChar(0,3,'A',false);
lc.setChar(0,2,'-',false);
lc.setChar(0,1,'-',false);
lc.setChar(0,0,'-',false);
}
void loop() {
// put your main code here, to run repeatedly:
DcsBios::loop();
}