• 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
Pablon
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
Una currada Ángel, muchas gracias! 👏🏼

Al final me vas a animar a ponerme trastear e instalarme unas pantallas de estas en mi setup😉

Una pregunta : con las pantallas estás de 16x2 se muestran dos lineas que pueden contener por ejemplo las frecuencias de dos de las radios del UH que elijamos, ¿habría alguna forma de que una sola pantalla pudiera mostrarnos las frecuencias de más de dos radios, por ejemplo haciendo scroll o pulsando algún botón para que cambiara la información que muestra en cada línea?
Image
Sólo hay dos tipos de aviones: cazas y objetivos.
  • 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
Pablon
hace 5 años
Una currada Ángel, muchas gracias! 👏🏼

Al final me vas a animar a ponerme trastear e instalarme unas pantallas de estas en mi setup😉

Una pregunta : con las pantallas estás de 16x2 se muestran dos lineas que pueden contener por ejemplo las frecuencias de dos de las radios del UH que elijamos, ¿habría alguna forma de que una sola pantalla pudiera mostrarnos las frecuencias de más de dos radios, por ejemplo haciendo scroll o pulsando algún botón para que cambiara la información que muestra en cada línea?
De nada Pablon ,las de 7 segmentos quedan muy bien y las hay de varios colores para adaptar a cualquier cabina.

En principio lo que dices de pulsar un boton y que muestre una frecuencia de radio u otra parece factible.Lo malo es que yo no tengo ni idea de programacion :cry:

Voy haciendo lo que puedo copiando codigo y probando.Si conoces a alguien que sepa de C++ o de algun lenguaje seguro que puede hacerlo.
  • 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
Se necesitaría un botón conmutador para que pille uno u otro y luego es meter un if...si os decidís intento ayudaros aunque mi C++ esta a nivel muy bajo.

También se podría hacer que cicle entre 3 radios por ejemplo. Primero una, pulsas y sale la otra y asi las tres.
  • Quote
User avatar
Pablon
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
Y una tarjeta Arduino UNO, ¿cuantos displays de 7 segmentos puede manejar? ¿O se necesita una tarjeta por pantalla?
Image
Sólo hay dos tipos de aviones: cazas y objetivos.
  • 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
Pablon
hace 5 años
Y una tarjeta Arduino UNO, ¿cuantos displays de 7 segmentos puede manejar? ¿O se necesita una tarjeta por pantalla?
No lo he probado pero se supone que necesitas 3 pines digitales por pantalla (DIN,CS y CLK) ,divide los pines digitales de una Arduino Uno o Mega entre tres y ahi tienes las que puede manejar.

Otra manera, mas rebuscad,a seria unir las pantallas en serie pero luego tendrías que fijarte en el codigo que cada frecuencia fuera a una posicion de esa larga fila.

Gracias por el ofrecimiento Durin , yo de momento solo ando explorando sistemas pero si Pablon y tu os poneis a hacer algo comentarlo por aqui que siempre puede servir de inspiracion a los demas ;)
  • 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 casi me doy por vencido pero hoy he conectado otro tipo de pantalla, una pequeña pantalla monocromo OLED de 128x64 px.

La compre porque tenia buena pinta ya que permite varias fuentes y hasta graficos, pero no me fije en sus pequeñas dimensiones, la que uso es de 0.91".Las hay un poco mas grandes, si pensais usarlas fijaos en el tamaño.
Image
El codigo es mas complicado pero afortunadamente ya hay gente que las ha usado para fabricarse MFDs y han compartido el codigo.

Asi que con un par de cambios de funcion (el codigo era para el F-18) , tamaño de texto y poco mas que pude entender ya la he hecho funcionar en mi querido Huey.

Primero como siempre descargar y añadir a Arduino las librerias necesarias para el manejo de esta pantalla.En este caso son...

Adafruit SSD1306 (para texto)
Adafruit GFX (esta es para mostrar graficos)

Ahi va el codigo...

Code: Select all

#define DCSBIOS_DEFAULT_SERIAL
#include <DcsBios.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
#define SCREEN_WIDTH 128 // OLED display ancho en pixels
#define SCREEN_HEIGHT 64 // OLED display altura en pixels

#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

int count;
///////////////////////// SETUP //////////////////////////////////////////////////////////////

void setup() {
 count = 0;
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 display.clearDisplay();
 display.setTextSize(2,4);
 display.setTextColor(WHITE);
 display.setCursor(0,0);
 display.cp437(true);
 display.print("Escuadron San Andres");
 display.display();

display.setTextSize(3,9);

 DcsBios::setup();
}

 
 /////////////////////////// LOOP ////////////////////////////////////////////////////////
void loop() {
  DcsBios::loop();  
}

////////////////////////////Config Display ///////////////////////////////////////////////////////

String comDisplay[2];

void updateComDisplay(int changed,char* newValue) {
 comDisplay[changed] = cleanUpCom(newValue);
 display.clearDisplay();
 display.setCursor(0,0);
 display.print(comDisplay[0]);
 display.setCursor(35,0);
 display.print(comDisplay[1]);
 display.display();
}  

char* cleanUpCom(char* newValue) {
 switch (newValue[0]) {
   case '`':
     newValue[0]='1';
     break;
   case '~':
     newValue[0]='2';
     break;
 }
 return newValue;  
}

//////////////////////////////////// VHF NAV HUEY /////////////////////////////////////////////////////

void onVhfnavFreqChange(char* newValue  ) {
 updateComDisplay(0, newValue);
}
DcsBios::StringBuffer<6> vhfnavFreqBuffer(0x14f0, onVhfnavFreqChange);


 
Si quereis usarlo en otro aparato id al final del codigo (donde puse // VHF NAV HUEY) y cambiais el codigo del control reference de esa radio del Huey por el aparato que querais.

Esta parte indica el tamaño de la pantalla en pixeles si usais otra de diferente tamaño cambiadlo
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels


En display.setTextSize(3,9); (parece que admite decimales) se ajusta el tamaño de letra ,yo la ajuste lo que pude pero aun asi no abarca toda la pantalla.Si subo a tamaño 4 se corta, creo que sepuede cambiar de fuentes pero no tengo ni idea de como.

Image
Frecuencia de NAV Radio fuente por defecto en tamaño 3,9 solo da unos 2cm de ancho :worried:

Pero al menos por fin funciona!
Last edited by Angel hace 5 años, edited 1 time in total.
  • 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
Alla vamos de nuevo con otro tipo de pantalla, esta vez una TFT exactamente esta
Es una Elegoo 2,8" TFT de 320x240 y controlador ILI9341.

Viene con un conector para montar encima de un Arduino Uno (tambien las hay mas grandes para Mega que igual vendrian muy bien para poner en vertical y mostrar varias lineas de un UFC), por tanto no hay que soldar nada pero usa todos los pines del Uno.
Image
Arduino Uno con el TFT en un sketch de prueba mostrando las fuentes BigFont,Smallfont y SevenSegmentNum

La conexion es sencilla solo hay que insertarla encima del Arduio Uno, solo hay una manera de hacerlo.

Luego, como siempre, nos hacen falta las librerias para controlar la pantalla, en este caso es MCUFRIEND_kbv que incluye otro llamada UTFTGLUE.h que es la que use.Asi que como siempre descargamos la libreria (.zip) y la añadimos a Arduino.
Tambien es recomendable instalar Adafriut GFX es para ostrar graficospero viene bien para cargarlos codigos de ejemplos y comprobar que la pantalla funciona bien.

IMPORTANTE
Con esta pantalla y libreria a mi me salia el texto invertido (otxet etse ev es omoc ogla),despues de romperme la cabeza encontre que la solucion era modificar un archivo.

Vamos a nuestra carpeta de Arduino/Libraries/MCUFRIEND_kbv-master y dentro abrimos (con notepad++)el archivo MCUFRIEND_kbv.cpp y buscamos esta linea...
case 0xE300: //weird from BangGood
_lcd_capable = AUTO_READINC | MIPI_DCS_REV1 | MV_AXIS | READ_24BITS | INVERT_SS | INVERT_RGB;
goto common_9329;
Eliminamos el INVERT_SS ,quedara asi...
case 0xE300: //weird from BangGood
_lcd_capable = AUTO_READINC | MIPI_DCS_REV1 | MV_AXIS | READ_24BITS | INVERT_RGB;
goto common_9329;
Guardamos y arreglado!*
* OJO acabo de recibir un mail del autor de la libreria ,al parecer ha cambiado el codigo para evitar ese problema pero aun no lo he comprobado.

Buenos vamos al codigo, como siempre me he basado en codigo que comparte gente que usa estas pantallas y lo he adaptado al panel y aparato que uso, hasta ahora he logrado la funcionalidad minima que he obtenido con las otras pantallas.Lo cual mostrara estas dos radios radios del Huey...
Image
(El rectangulo rojo lo he eliminado sigo haciendo pruebas)

Code: Select all

#define DCSBIOS_IRQ_SERIAL

#include "DcsBios.h"
#include <Adafruit_GFX.h>
#include <UTFTGLUE.h>

UTFTGLUE myGLCD(0x9488,A2,A1,A3,A4,A0);

void printChar(int row, int col, unsigned char c) {
  int16_t x = 13 + col * 19;
  int16_t y = row * 32 + 6;
  myGLCD.drawChar(x, y, c, 0x07E0, 0x0, 3);
} 

/* paste code snippets from the reference documentation here */
//////////////////////// DCS BIOS ////////////////////////////////

// VHF NAV HUEY
// "i" de 1 a 6 va mostrando esos digitos
 
void onVhfnavFreqChange(char* newValue) {
  for(int i = 0; i < 6; i++){
    myGLCD.print("VHF NAV",0,0);
    printChar(1, i, newValue[i]);
  }
}
DcsBios::StringBuffer<6> vhfnavFreqBuffer(0x14f0, onVhfnavFreqChange);

// VHF COMM HUEY
void onVhfcommFreqChange(char* newValue) {
  for(int i = 0; i <7; i++){
    myGLCD.print("VHF COMM",0,75);
    printChar(3, i, newValue[i]);
  }
}
DcsBios::StringBuffer<7> vhfcommFreqBuffer(0x14d4, onVhfcommFreqChange);


////////////////////////////// SETUP ///////////////////////////////////// 

void setup() {
  DcsBios::setup();

  // Setup the LCD
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setTextSize(3);
  myGLCD.setColor(0, 0, 255);

}

//////////////////////////// LOOP /////////////////////////////////////////

void loop() {
  DcsBios::loop();
}

Last edited by Angel hace 5 años, edited 10 times in total.
  • 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
Joder Angel, estos post son oro puro para los que nos gustan estas cosas...Sabes que si no llevase VR ya estaría liado preguntándote cosas...te libras por eso!

Gracias por compartirlo con todos!
  • 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
Opino lo mismo.
Estos tutoriales que has hecho, son para ponerlos "destacados" al principio de la sección de hardware... de acceso rápido, vamos.
Gracias por publicarlos.
:thumbsup:
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
De nada, ya que me he puesto estoy probando con todo tipo de pantallas.Los resultados son algo basicos pero por lo menos quien quiera ponerse a ello ya tiene por donde empezar.
  • Quote
Hardware
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Next
No registered users
  • © 2026 Luis Glez 'Orleans'