Joer Angel, te estas metiendo en unos niveles que a ver quien te pilla...jeje.
Ale, animo !!!
S!
Hardware

Que Gran Judini, si señor... sigue instruyendonos porfa, quizá algún dia me atreva con algo y nos vas mostrando el camino de manera muy didactica.
Gracias Angel. Muy interesantes todos estos montajes.

Vade et tu fac similiter
Conexion de displays en DCS con DCS-Bios y Arduino
Conexion de displays en DCS con DCS-Bios y Arduino
Conexion de displays en DCS con DCS-Bios y Arduino
Bueno lo de la programacion lo que hago es copiar codigo que veo por ahi, intentar entender algo ( funciones y variables) y modificarlo para usarlas librerias que necesite para controlar otros tipos de pantallas.
Estoy probando con la radio ADF del Huey como veis y hoy acabo de lograr otro avance....Servos!!!
Este SG90 de 180º es muy barato y sorprendentemente facil de manejar con DCS Bios, solo necesitas 1 PIN Digital.
Asi que lo de la segunda pantalla para mostrar la fuerza de la señal igual lo cambio tambien por una aguja manejada por este servo...
El codigo por aqui....
Para manejar el servo tenemos que incluir la libreria <servo.h> ,la configuracion es solo esta linea...

Estoy probando con la radio ADF del Huey como veis y hoy acabo de lograr otro avance....Servos!!!
Este SG90 de 180º es muy barato y sorprendentemente facil de manejar con DCS Bios, solo necesitas 1 PIN Digital.
Asi que lo de la segunda pantalla para mostrar la fuerza de la señal igual lo cambio tambien por una aguja manejada por este servo...
El codigo por aqui....
Code: Select all
#include <Servo.h>
#include <Arduino.h>
#include <TM1637Display.h>
#define DCSBIOS_IRQ_SERIAL
#include <DcsBios.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
//Variables
unsigned int band, signal, rawFreq;
double freq;
#define TEST_DELAY 2000
// Configuramos display
TM1637Display display(CLK, DIO);
// Funcion actualizar frecuencia en pantalla
void refreshScreen() {
display.showNumberDec(freq,false);
}
// Aqui calcula los valores de las frecuencias en cada rango
void calculateFreq() {
float b;
const float maxValue = 65535;
switch (band) {
case 0: { //190-400 kHz (~210kHz)
//A = desired freq
//B = freq based on adfCockpitFrequencyRaw
//(A>200) A = B - ((B * -0.04408) + 18.31) //Creds Paul Marsh
b = ((float(rawFreq) / maxValue) * 210) + 190;
freq = b - ((b * -0.04408) + 18.31);
break;
}
case 1: { //400-850 kHz (~450kHz)
b = ((float(rawFreq) / maxValue) * 450) + 400;
if (b < 451) {
//A = B + ((B * -0.44837) + 177.08)
//freq = b + ((b * -0.44837) + 181.58);
freq = b + ((b * -0.44837) + 177.08);
} else {
//A = B + ((B * 0.11291) - 100.61)
//freq = b + ((b * 0.11291) - 96.11);
freq = b + ((b * 0.11291) - 100.61);
}
break;
}
case 2: { //850-1800 kHz (~950kHz)
//A = B - ((B * -0.04532) + 91.54)
b = ((float(rawFreq) / maxValue) * 950) + 850;
freq = b - ((b * -0.04532) + 91.54);
break;
}
}
}
//Si cambia la banda de frecuencias,recalcula y actualiza valor pantalla
void onAdfBandChange(unsigned int newValue) {
band = newValue;
calculateFreq();
refreshScreen();
}
DcsBios::IntegerBuffer adfBandBuffer(0x14fc, 0x00c0, 6, onAdfBandChange);
//Si cambia la posicion de la rueda de frecuencias, recalcula y actualiza valor pantalla
void onAdfFreqChange(unsigned int newValue) {
rawFreq = newValue;
calculateFreq();
refreshScreen();
}
DcsBios::IntegerBuffer adfFreqBuffer(0x1426, 0xffff, 0, onAdfFreqChange);
/////////////////////////////////////////////////////////////////////////
/* Aqui configura un enconder para manejar el TUNE ,en la primera linea */
DcsBios::RotaryEncoder adfTune("ADF_TUNE", "-3200", "+3200", 4, 5);
//Signal Level con Servo en pin 9
DcsBios::ServoOutput adfSignal(0x1428,9, 2400, 544);
///////////////////////////////////////////////////////////////////////
// SETUP
void setup() {
// Clear the display:
display.clear();
delay(1000);
DcsBios::setup();
freq = 0;
signal = 0;
}
/////////////////////////////////////////
// LOOP
void loop() {
DcsBios::loop();
// Set the brightness to 5 (0=dimmest 7=brightest)
// Si no configuras brillo no funciona?
display.setBrightness(5);
}
Aqui se ve que el servo esta conectado en el pin 9, los otros valores (2400, 544) son referentes al angulo de giro como puede verse aqui...DcsBios::ServoOutput adfSignal(0x1428,9, 2400, 544);
Last edited by Angel hace 5 años, edited 1 time in total.
Conexion de displays en DCS con DCS-Bios y Arduino
Conexion de displays en DCS con DCS-Bios y Arduino
Que Gran Judini, si señor... sigue instruyendonos porfa, quizá algún dia me atreva con algo y nos vas mostrando el camino de manera muy didactica.
Gracias Angel. Muy interesantes todos estos montajes.

Vade et tu fac similiter
Conexion de displays en DCS con DCS-Bios y Arduino
Conexion de displays en DCS con DCS-Bios y Arduino
Bueno pues sigo haciendo pruebas con la radio ADF del Huey, estoy cortando (y grabando) paneles de metacrilato con mi router CNC.
De momento solo utilizo fresas el laser aun no lo he desempaquetado, y parece que empiezo a sacar algo mas o menos decente.Ma he pillado un panel blanco para la frecuencia ,he puesto una aguja de prueba y lo he grabado para que se puda retroiluminar.
A ver como va quedando la cosa, de momento la "beta" se ve asi...
De momento solo utilizo fresas el laser aun no lo he desempaquetado, y parece que empiezo a sacar algo mas o menos decente.Ma he pillado un panel blanco para la frecuencia ,he puesto una aguja de prueba y lo he grabado para que se puda retroiluminar.
A ver como va quedando la cosa, de momento la "beta" se ve asi...
Conexion de displays en DCS con DCS-Bios y Arduino
Conexion de displays en DCS con DCS-Bios y Arduino
Gracias chicos!
El corte de metacrilato ya lo voy controlando, tiene que ser lento para que no se derrita y con fresas especiales que saquen grandes virutas.Ya abrire hilo mas adelante con esos detalles por si alquien quiere ponerse a ello.
El grabado aun no lo tengo tan controlado, el programa que uso no tiene opcion para "engraver bits" ni las fuentes mas adecuadas para ello y voy probando como puedo.
Otra cosa que me esta llevando tiempo son los mandos de control.DCS Bios en el ADF te da opcion a usar encoders dobles (que son dificiles de encontrar y no es realista) o los mandos originales de esa radio que serian un selector de 3 o 5 posiciones y un encoder o potenciometro encima.
Com ese tipo de mando no se vende, estoy tratando de construir uno combinando ambos componentes.Para ello he tenido que agujerear el selector inferior para dejar pasar los cables del encoder...

Tambien los paneles tienen un arco para que no se fuercen los cables.Parece que la cosa funciona, lo unico que me vendria bien es una impresora 3D para hacer los knobs superiores pero con un poco de maña y alguna tapa de plastico pintada igual da el pego.

El corte de metacrilato ya lo voy controlando, tiene que ser lento para que no se derrita y con fresas especiales que saquen grandes virutas.Ya abrire hilo mas adelante con esos detalles por si alquien quiere ponerse a ello.
El grabado aun no lo tengo tan controlado, el programa que uso no tiene opcion para "engraver bits" ni las fuentes mas adecuadas para ello y voy probando como puedo.
Otra cosa que me esta llevando tiempo son los mandos de control.DCS Bios en el ADF te da opcion a usar encoders dobles (que son dificiles de encontrar y no es realista) o los mandos originales de esa radio que serian un selector de 3 o 5 posiciones y un encoder o potenciometro encima.
Com ese tipo de mando no se vende, estoy tratando de construir uno combinando ambos componentes.Para ello he tenido que agujerear el selector inferior para dejar pasar los cables del encoder...

Tambien los paneles tienen un arco para que no se fuercen los cables.Parece que la cosa funciona, lo unico que me vendria bien es una impresora 3D para hacer los knobs superiores pero con un poco de maña y alguna tapa de plastico pintada igual da el pego.

Conexion de displays en DCS con DCS-Bios y Arduino
Conexion de displays en DCS con DCS-Bios y Arduino
Bueno pues el primer selector doble de banda y frecuencia que he hecho ya esta funcionando.
Un rotary switch de 3 posiciones, del cual solo tuve que usar dos pines (DCS Bios lo reconoce como un switch on-off-on) y pegado encima un encoder para moverla frecuencia.
Un rotary switch de 3 posiciones, del cual solo tuve que usar dos pines (DCS Bios lo reconoce como un switch on-off-on) y pegado encima un encoder para moverla frecuencia.
No registered users