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.

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

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