• Buscar
  • Entrar

escuadrón

Cruz de San Andrés

  • Público
  • General
  • Presentaciones
  • Academia
  • Reactores
  • Helicópteros
  • Históricos
  • Av Comercial
  • Espacio
  • Videojuegos
  • Hardware
Hardware

Conexion de displays en DCS con DCS-Bios y Arduino

  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Next
User avatar
Dimoni
Cadete

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
Joer Angel, te estas metiendo en unos niveles que a ver quien te pilla...jeje.

Ale, animo !!!

S!
Fem por o fugim ?
  • Quote
User avatar
Durin
Piloto
Patrocinador

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
yo flipo con cada post....eso de que no sabes programar vamos a dejarlo eh? joder que maravillas te montas!
  • Quote
User avatar
Angel
Cadete

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
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....

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

  
}
Para manejar el servo tenemos que incluir la libreria <servo.h> ,la configuracion es solo esta linea...
DcsBios::ServoOutput adfSignal(0x1428,9, 2400, 544);
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...

Image
Last edited by Angel hace 5 años, edited 1 time in total.
  • Quote
User avatar
ikaro
Piloto

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
:flushed:

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.
Image
Vade et tu fac similiter
  • Quote
User avatar
Angel
Cadete

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
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...

  • Quote
User avatar
Dimoni
Cadete

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
Joer, y tanto que esta decente. Sin prisa pero sin pausa eh amigo...jeje, asi se llega a las cosas.

Muy guapo, eso promete, animo !!

S!
Fem por o fugim ?
  • Quote
User avatar
dender
Piloto

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
Te está quedando muy bien Angel :thumbsup:
  • Quote
User avatar
Durin
Piloto
Patrocinador

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
menuda "puta" maravilla macho...que grande Angel....me encanta como esta quedando...:thumbsup:
  • Quote
User avatar
Angel
Cadete

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
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...

Image

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.

Image
  • Quote
User avatar
Angel
Cadete

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años

Conexion de displays en DCS con DCS-Bios y Arduino

hace 5 años
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.

  • Quote
Hardware
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Next
No registered users
  • © 2026 Luis Glez 'Orleans'