OLED vs. TFT-Displays

Muchos proyectos que se presentan en nuestro blog proporcionan una retroalimentación visual a los usuarios. Ya sea a través de un LED pequeño o una pantalla pequeña, se puede obtener información de estado o información actual. Las pantallas más comunes se conocen como OLED o TFT. ¿Cuál es la diferencia entre ambas pantallas? ¿Cuándo es recomendable usar pantallas OLED en su proyecto y cuando utilizar pantallas TFT?

Estas preguntas serán aclaradas en esta publicación.

Alcance de la entrega

Si observa el surtido de AZ-Delivery, se dará cuenta rápidamente de que hay muchos tipos y tamaños de pantalla diferentes, vea https://www.az-delivery.de/es/collections/displays.

Puede filtrar OLED o TFT para que las opciones sean más precisas, pero las opciones de pantalla siguen siendo amplias. Sin embargo, sólo hay dos maneras diferentes de controlar las pantallas. Por un lado, I2C, que representa un Circuito Integrado Interno, y SPI,  que representa una Interfaz Periférica Serial. Ambos son llamados bus system. El principio básico de ambos sistemas de bus es que usted tiene un maestro fijo, que generalmente es un Microcontrolador, y las pantalla están integradas como un esclavo. El intercambio de datos se realiza a través de dos o cuatro líneas, y el cableado correcto se realiza según con el sistema de bus. Más información sobre I2C y SPI puede encontrarla en Wikipedia.

La tecnología detrás de OLED y TFT

OLED es la abreviación de Organic Light Emmiting Diode, o diodo orgánico de emisión de luz en español.

Mientras que, TFT es la abreviación de Thin Film Transistor, transistor de película fina en español.

Esa es la primera diferencia entre ambos.

OLED utiliza materiales químicos orgánicos y TFT está elaborado a partir de cristales líquidos. Esto último puede ser familiar para usted, ya que la tecnología del TFT es la evolución de la tecnología LCD. Se aplica un voltaje a los cristales líquidos para que cambien su orientación y, por tanto, cambiando así la transmisión de la luz.

Los OLED, en particular, todavía tienen la reputación de ser tenues, poco duraderos y poco fiables. Esto puede haber sido cierto en el pasado, pero la tecnología ha avanzado mucho en comparación con hace 20 años. Así que este prejuicio deja de prevalecer en los tiempos actuales.

Debido a que las pantallas OLED no necesitan retroiluminación, es decir, iluminación de fondo, son en cierta medida mucho mejores que las pantallas TFT. Ya que, en comparación directa, TFT consume casi el 90% de la retroiluminación.

Esto no significa que las pantallas OLED sean más brillantes que las TFT, porque de hecho el brillo de los TFT es mejor que los OLED debido a la retroiluminación. Sin embargo, la legibilidad depende en gran medida del contraste, y los OLED van por delante en este aspecto.

Positivo y Negativo de OLED / TFT 

Como se mencionó anteriormente, las técnicas detrás de los dos tipos de pantallas son diferentes, esto tiene ventajas y desventajas. No hay una pantalla perfecta, pero uno se diferencia del otro de una manera u otra. En la tabla 1 se presentan las diferencias entre las pantallas OLED y TFT.

 

OLED

TFT

Diagonal de pantalla

Hasta 1,3"*

Hasta 2,8"**

Píxeles

128 x 64 

320 x 240 

Fuente de alimentación

3.3 V - 5 V

3.3V y 5V***

Comunicación

Principalmente I2C

SPI

Capacidad de color

Sólo un color sólido

Puede determinar el color del elemento a mostrar

Conexiones

4 Pines

Por lo menos 7 Pines

Accesorios

Ninguno

Ranura para tarjetas SD táctil y parcial

Retroiluminación

No

*)     Tamaño disponible en AZ-Delivery, a partir del 02.2021

**)    La carcasa de pared AZ-Touch con pantalla táctil de 2,8" sirve de referencia.

***)   La pantalla por sí misma sólo utiliza 3,3 V y la pantalla táctil requiere un voltaje separado

Tabla 1: Comparación de TFT y OLED

Por supuesto, más importante que los pros y los contras, es lo rápido que estas pantallas se pueden integrar en un proyecto. Por lo tanto, en este blog se deben considerar los siguientes factores:

  1. ¿Cuánto cableado se necesita?
  2. ¿Con qué rapidez se puede integrar una pantalla en el software para mostrar texto?
  3. ¿Cuál es la carga de trabajo de usar la función táctil? (Sólo TFT)

Hardware y software para este blog

Los componentes de la Tabla 2 sirven como referencia del hardware para este blog, pero no cubren toda la gama de AZ-Delivery. Sin embargo, muchos componentes son idénticos en cuanto al control o las librerías utilizadas, y sólo requieren un ajuste mínimo en la configuración.

Número Componentes
1 Nano V3.0, Soporte ATmega328 CH340
O
Nano V3.0 con chip FT232RL y ATmega328
1 Placa de Microcontrolador con Cable USB compatible con Arduino uno R3
1 Pantalla táctil LCD TFT 2,4 pulgadas
1 Pantalla 0,96 pulgadas OLED I2C 128 x 64 píxeles compatible con Arduino y Raspberry Pi
1 Pantalla 0,91 pulgadas OLED I2C 128 x 32 píxeles compatible con Arduino y Raspberry Pi
1 Módulo ESP32 NodeMCU WLAN WiFi Development Board con CP2102 (modelos posteriores de ESP 8266)
1 Pantalla TFT SPI de 1,8 pulgadas 128 x 160 píxeles compatible con Arduino y Raspberry Pi

Tabla 2: Hardware para las pruebas

Otros paquetes completos, como la carcasa de pared AZ-Touch, no se consideran aquí, aunque la pantalla TFT incorporada puede funcionar teóricamente sin la placa un microcontrolador adecuado.

Para que pueda copiar este blog, necesitará del siguiente software y de las librerías:

  • Arduino IDE (https://www.arduino.cc/en/Main/Software), por favor descargue la última versión en el link superior
  • La librería Adafruit_SSD1306, disponible en la versión 2.4.1, cuando se escribió el artículo, con todas las dependencias
  • La librería MCUFRIEND_kbv, disponible en la versión 2.9.9, cuando se escribió el artículo, con todas las dependencias 
  • La librería TFT_eSPI, disponible en la versión 2.3.59, cuando se escribió el artículo, con todas las dependencias

Se instalan a través de la gestión de librerías, revise https://www.az-delivery.de/es/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/arduino-ide-programmieren-fuer-einsteiger-teil-1 en la sección de gestión de librerías.

La Pantalla OLED

Como se mencionó al principio de este blog, la pantalla OLED es muy sencilla.

Para un "Nano V3.0 con ATmega328 CH340", la integración de una "Pantalla 0,96 pulgadas OLED I2C 128 x 64 píxeles compatible con Arduino y Raspberry Pi" o "Pantalla 0,91 pulgadas OLED I2C 128 x 32 píxeles compatible con Arduino y Raspberry Pi" es muy simple, observe las Figura 1 y Figura 2.

Figura 1: Nano V3.0 con una gran pantalla I2C

Figura 2: Nano v3.0 con una pantalla pequeña I2C

Con un "Modulo ESP32 NodeMCU WLAN WiFi Development Board con CP2102" se pueden utilizar ambas interfaces I2C. De igual forma, la integración de una "Pantalla 0,96 pulgadas OLED I2C 128 x 64 píxeles compatible con Arduino y Raspberry Pi" o "Pantalla 0,91 pulgadas OLED I2C 128 x 32 píxeles compatible con Arduino y Raspberry Pi" es muy simple, observe la Figura 3.

Figura 3: Módulo ESP32 NodeMCU con dos pantallas I2C

Tome en cuenta el voltaje que las pantallas necesitan. Algunas sólo pueden manejar 3.3V, uno necesita 5V, y otros pueden manejar ambos voltajes al mismo tiempo, de lo contrario no verá nada en la pantalla.

Para que el monitor muestre algo, hay un programa de demostración corto, en el cual un contador cada dos segundos aumenta y lo hace visible en la pantalla. Código 1 para pantallas pequeñas y Código 2 para pantallas grandes, las pantallas I2C están separadas. Al inicializar, considere el tamaño correcto de la pantalla con la definición "#define SCREEN_WIDTH“ und „#define SCREEN_HEIGHT“. Esto dará más tarde el tamaño de píxel correcto al objeto "display" cuando se inicialice "Adafruit_SSD1306 display (SCREEN_WIDTH_SCREEN_HEIGHT,& WIRE):".

Nano v3.0 minitype i2c display
Por jorn Weise
Licencia: GNU GPL 3.0
Fecha de creación: 9 de febrero de 2021
Actualización: 9 de febrero de 2021
//-----------------------------------------------------
Incluye las bibliotecas necesarias
« 35; incluye < adafruit < ssd1306.h >
35; incluye < wire.h >

Mostrar variables
« 35; definir screen 'u width 128 / / OLED Display width (pixels)
35; definir la altura de la pantalla / / OLED (píxeles)
Pantalla adafruit / ssd1306 (pantalla / ancho, pantalla / altura y línea);

International Corporation;
/*
* =================================================================
Función: configuración
Devuelve: vacío
Descripción: configuración de la pantalla y el sensor
* =================================================================
*/
Configuración no válida ()
Arranque en serie (115200);
Icnt = 0;
Impresión en serie (F ("pantalla inicial");
¡Y (!Mostrar inicio (ssd1306 a switchcapvcc, 0x3c))
OLED Display address 0x3c
  {
Impresión continua (");
  }
Serial. Println ().Complete);
Borrar Buffer
Display.clear Display ();
Display. Settextsize (1)Escala normal de 1: 1 píxeles
Display. Settextcolor (ssd1306 - u White)Dibujar texto blanco
Mostrar cursor de configuración (0,0)Desde la esquina superior izquierda
Mostrar. Println ("OLED Display demo");
Display. Println ("(c) Joe Pattern");
Display.println ("for Az delivery");
Mostrar. Mostrar ();
Retraso (5000);
}

/*
* =================================================================
Función: bucle
Devuelve: vacío
Descripción: el bucle principal que hace que el programa funcione
* =================================================================
*/
Bucle no válido ()

Display. Settextsize (1)Escala normal de 1: 1 píxeles
Display.cleardisplay () / /Eliminar contenido antiguo
Display. Settextsize (1)Escala normal de 1: 1 píxeles
Display. Settextcolor (ssd1306 - u White)Dibujar texto blanco
Mostrar cursor de configuración (10,10)Desde la esquina superior izquierda
Mostrar impresión ("contador de demostración");
Tamaño de la pantalla (2)Escala normal de 2: 1 píxeles
Mostrar cursor de configuración (64,32);
Mostrar. Println (icnt);
Mostrar. Mostrar () / /Mostrar nuevo contenido al final
Icnt +;
Si (icnt > = 100)
Icnt = 0;
Retraso (2000) / /No es la mejor solución, pero funciona muy bien para esta demostración
}

Código 1: Código de ejemplo OLED pequeña pantalla I2C con Nano V3

Nano v3.0 gran pantalla i2c
Por jorn Weise
Licencia: GNU GPL 3.0
Fecha de creación: 9 de febrero de 2021
Actualización: 9 de febrero de 2021
//-----------------------------------------------------
Incluye las bibliotecas necesarias
« 35; incluye < adafruit < ssd1306.h >
35; incluye < wire.h >

Mostrar variables
« 35; definir screen 'u width 128 / / OLED Display width (pixels)
« 35; definir la altura de la pantalla en píxeles 64 / / OLED
Pantalla adafruit / ssd1306 (pantalla / ancho, pantalla / altura y línea);

International Corporation;
/*
* =================================================================
Función: configuración
Devuelve: vacío
Descripción: configuración de la pantalla y el sensor
* =================================================================
*/
Configuración no válida ()
Arranque en serie (115200);
Icnt = 0;
Impresión en serie (F ("pantalla inicial");
¡Y (!Mostrar inicio (ssd1306 a switchcapvcc, 0x3c))
OLED Display address 0x3c
  {
Impresión continua (");
  }
Serial. Println ().Complete);
Borrar Buffer
Display.clear Display ();
Display. Settextsize (1)Escala normal de 1: 1 píxeles
Display. Settextcolor (ssd1306 - u White)Dibujar texto blanco
Mostrar cursor de configuración (0,0)Desde la esquina superior izquierda
Mostrar. Println ("OLED Display demo");
Mostrar. Println (");
Display. Println ("(c) Joe Pattern");
Mostrar. Println (");
Display.println ("for Az delivery");
Mostrar. Mostrar ();
Retraso (5000);
}

/*
* =================================================================
Función: bucle
Devuelve: vacío
Descripción: el bucle principal que hace que el programa funcione
* =================================================================
*/
Bucle no válido ()

Display. Settextsize (1)Escala normal de 1: 1 píxeles
Display.cleardisplay () / /Borrar contenido antiguo
Display. Settextsize (1)Escala normal de 1: 1 píxeles
Display. Settextcolor (ssd1306 - u White)Dibujar texto blanco
Mostrar cursor de configuración (10,10)Desde la esquina superior izquierda
Mostrar impresión ("contador de demostración");
Tamaño de la pantalla (2)Escala normal de 2: 1 píxeles
Mostrar el cursor de configuración (64,30);
Mostrar. Println (icnt);
Mostrar. Mostrar () / /Mostrar nuevo contenido
Icnt +;
Si (icnt > = 100)
Icnt = 0;
Retraso (2000) / /No es la mejor solución, pero funciona muy bien para esta demostración
}

Código 2: Código de ejemplo OLED pantalla grande I2C con Nano V3

 

Dado que el Módulo ESP32 NodeMCU utiliza la placa de desarrollo WiFi con CP2102 utiliza las pantallas i2c, el código para ambas pantallas se puede simplificar al código fuente, observe el Código 3.

Esp32 con dos pantallas i2c
Por jorn Weise
Licencia: GNU GPL 3.0
Fecha de creación: 9 de febrero de 2021
Actualización: 9 de febrero de 2021
//-----------------------------------------------------
Incluye las bibliotecas necesarias
« 35; incluye < adafruit < ssd1306.h >
35; incluye < wire.h >

Definir dos Pines i2c
« 35; i2c para definir sda1 17
« 35; definición i2c scl1 16
« 35; i2c para definir sda221
« 35; definición i2c scl2 22

Objetos para / i2c
Twowire i2cone = twowire (0);
Twowire i2ctwo = Double Line (1);

Mostrar variables
35; define el ancho de pantalla como un ancho de pantalla 128 / / OLED (píxeles)
« 35; definir la altura de la pantalla en 64 / / OLED, en píxeles
« 35; define el ancho de pantalla de la pantalla « width» two 128 / / OLED en píxeles
« 35; definir la altura de la pantalla en píxeles
Adafruit / ssd1306 displayone (screen / width / One, screen / height one, & i2cone);
Adafruit / ssd1306 Display two (screen / width / two, screen / height 2, & i2ctwo);

International Corporation;

/*
* =================================================================
Función: configuración
Devuelve: vacío
Descripción: configuración de la pantalla y el sensor
* =================================================================
*/
Configuración no válida ()
Arranque en serie (115200);
I2cone. Start (i2c sda1, i2c SCL 14000);
I2c2. Inicio (i2c a sda2, i2c a SCL 240000);
Icnt = 0;
Serie. Print (F ("init Display One");
¡Y (!Displayone.start (ssd1306 Switch capacitor VCC, 0x3c))
OLED Display address 0x3c
  {
Impresión continua (");
  }
Serial. Println ().Complete);

Serie. Print (F ("init Display two");
¡Y (!Mostrar 2. Inicio (ssd1306 - u switchcapvcc, 0x3c))
OLED Display address 0x3c
  {
Impresión continua (");
  }
Serial. Println ().Complete);

Display One. Clear Display () / /Borrar Buffer
Displayone. Settextsize (1)Escala normal de 1: 1 píxeles
Displayone. Settextcolor (ssd1306 - u White)Dibujar texto blanco
Displayone. Setcursor (0,0)Desde la esquina superior izquierda
Displayone. Println ("OLED Display demo");
Displayone. Println (");
Displayone. Println ("(c) Joe Weise");
Displayone. Println (");
Displayone. Println ("for Az delivery");
Display One. Display ();

Displaytwo. Clear Display () / /Borrar Buffer
Mostrar 2. Settextsize (1)Escala normal de 1: 1 píxeles
Mostrar 2. Settextcolor (ssd1306 - u blanco)Dibujar texto blanco
Mostrar 2. Setcursor (0,0)Desde la esquina superior izquierda
Displaytwo. Println ("OLED Display demo");
Displaytwo. Println ("c) Joe Mode");
Displaytwo. Println ("for Az delivery");
Displaytwo. Display ();
Retraso (5000);
}

/*
* =================================================================
Función: bucle
Devuelve: vacío
Descripción: el bucle principal que hace que el programa funcione
* =================================================================
*/
Bucle no válido ()
Displayone. Settextsize (1)Escala normal de 1: 1 píxeles
Display One. Clear Display ();
Displayone. Settextsize (1)Escala normal de 1: 1 píxeles
Displayone. Settextcolor (ssd1306 - u White)Dibujar texto blanco
Establecer cursor (10,10)Desde la esquina superior izquierda
Displayone. Print ("Demo counter");
Displayone. Settextsize (2)Escala normal de 2: 1 píxeles
Establecer cursor (64,30);
Displayone. Println (icnt);
Display One. Display ();

Mostrar 2. Settextsize (1)Escala normal de 1: 1 píxeles
Displaytwo. Clear Display ();
Mostrar 2. Settextsize (1)Escala normal de 1: 1 píxeles
Mostrar 2. Settextcolor (ssd1306 - u blanco)Dibujar texto blanco
Mostrar 2. Establecer cursor (10,10) / /Desde la esquina superior izquierda
Displaytwo. Print ("Demo counter");
Mostrar 2. Settextsize (2)Escala normal de 2: 1 píxeles
Mostrar 2. Imprimir (icnt);
Displaytwo. Display ();

Icnt +;
Si (icnt > = 100)
Icnt = 0;
Retraso (2000) / /No es la mejor solución, pero funciona muy bien para esta demostración
}

Código 3: Módulo ESP32 NodeMCU con dos pantallas I2C

Tenga en cuenta que al principio del Código se crean dos conexiones I2C, "I2Cone" y "I2Ctwo", que luego se emplean para iniciar las pantallas. Por lo tanto, las pantallas se pueden dirigir individualmente. Para todos los Microcontroladores, vea la Figura 4, las pantallas muestran el texto de bienvenida y el contador de demostración.


Figura 4. Nano V3 y Módulo ESP32 NodeMCU con Pantallas I2C

Si apaga la luz y no observa ninguna retroiluminación, sino una pantalla muy nítida.

La Pantalla TFT

A continuación, se debe analizar más de cerca la pantalla TFT. Se comienza con la "2,4 TFT LCD Touch Display". Puede ser capaz de mostrar esta pantalla por una publicación del blog anterior Tic Tac Toe con pantalla táctil de 2,4". Esto se conecta simplemente a una placa de Microcontrolador con Cable USB y que es compatible con Arduino Uno R3. No se proporciona una transmisión de todas las I/O, por lo que la pantalla sólo se puede utilizar como un solo escudo, vea la Figura 5.

Figura 5: Pantalla táctil LCD TFT 2,4 con placa de Microcontrolador con Cable USB, compatible con Arduino Uno R3

Para esta pantalla en especial, se utilizará la librería MCUFRIEND_kbv. El código 4 genera un contador simple de nuevo en la pantalla. Lo que mas se destaca en cuanto al funcionamiento es que la pantalla parpadea mucho con la actualización.

Pantalla LCD TFT de 2,4 pulgadas con Microcontrolador compatible con uno R3
Por jorn Weise
Licencia: GNU GPL 3.0
Fecha de creación: 11 de febrero de 2021
Fecha de actualización: 11 de febrero de 2021
//-----------------------------------------------------
Incluye las bibliotecas necesarias
« 35; incluye < mcufriend 'u kbv.h >

A todos les gusta el color.
« 35; definir negro 0x0000
« 35; definir azul 0x001f
« 35; definir rojo 0xf800
« 35; definir verde 0x07e0
« 35; definir cian 0x07ff
« 35; definir Magenta 0xf81f
« 35; definir amarillo 0xffe0
« 35; definir blanco 0xffff

International Corporation;
Mcufriend - kbv - TFTPantalla de inicialización

/*
* =================================================================
Función: configuración
Devuelve: vacío
Descripción: configuración de la pantalla y el sensor
* =================================================================
*/
Configuración no válida ()
Arranque en serie (115200);
Uint 16 u t id = TFT. Readid () / /Leer ID de la pantalla
Serie. Println ("2.4 TFT LCD Display example");
Serie. Print ("TFT id = 0x");
Serie. Println (ID, Hex);
Inicio (ID)Pantalla de inicio
TFT set spin (1)Tasa de baudios
TFT. Filescreen (negro)Eliminar contenido de la pantalla
Establecer el primer texto
Establecer cursor (30,40);
TFT. Color (azul);
TFT. Set textsize (4);
TFT. Println ("2.4 'TFT");
Establecer cursor (30,90);
TFT. Settextcolor (rojo);
TFT. Println ("LCD");

TFT. Settextsize (3);
Color (blanco);
Establecer cursor (30130);
TFT. Print ("c) Joe Pattern");

TFT. Color (amarillo);
Establecer cursor (30180);
TFT. Settextsize (3);
TFT. Print ("for Az delivery");
Icnt = 0;
Retraso (5000);
}

/*
* =================================================================
Función: bucle
Devuelve: vacío
Descripción: el bucle principal que hace que el programa funcione
* =================================================================
*/
Bucle no válido ()
TFT. Filescreen (negro)Eliminar contenido
Escribe la primera línea
Establecer cursor (30,40);
TFT. Color (azul);
TFT. Set textsize (4);
TFT. Print ("Demo count:");
Escribe la segunda línea en el contador
TFT. Color (amarillo);
Establecer cursor (150130);
TFT. Set textsize (4);
Impresión TFT (icnt);
Contador incremental
Icnt +;
Si (icnt > = 100)
Icnt = 0;
Retraso (2000) / /No es la mejor solución, pero funciona muy bien para esta demostración
}

Código 4: Un ejemplo de recuento más sencillo para una pantalla táctil TFT - LCD 2,4 con una placa de microcontrolador

La Figura 6 presenta el mismo contador que las pantallas OLED. La mayor ventaja es el color.

Figura 6: Ejemplo de contador en operación

En teoría, también la pantalla se puede conectar a un ESP32 NodeMCU; sin embargo, el consumo de energía de la pantalla es tan alto, por lo que debe utilizar una fuente de voltaje separada de 3,3V. Si la conexión es incorrecta, puede dañar el Microcontrolador, y posiblemente la conexión USB de su PC, explicar la conexión correcta con más detalle está fuera del alcance de este artículo. Sin embargo, puede encontrar varias fuentes en Internet que muestran la conexión correcta.

Por último, se mostrará una de las pantallas TFT más comunes de AZ-Delivery. En primer lugar, la pantalla LED "1.8" TFT LED 128x160" se controlará con un Nano V3.0. La Figura 7 muestra el cableado de los dos componentes con la fuente de alimentación y la conexión SPI. Nota: la pantalla se alimenta con 3,3V y el LED de la luz de fondo con 5V.

Figura 7: Cableado de TFT con Nano V3.0

El código fuente, observe Código 5, se mantiene simple como en las pantallas OLED.

Nano v3.0 con 128x160tft
Por jorn Weise
Licencia: GNU GPL 3.0
Fecha de creación: 13 de febrero de 2021
Actualización: 13 de febrero de 2021
//-----------------------------------------------------
35; incluye < tft.h >
« 35; incluye < spi.h >

Definición de PIN para Nano v3.0
« 35; definición CS 10
« 35; definición DC 9
« 35; definir los 8 primeros

International Corporation;
Crear instancias de bibliotecas
Pantalla TFT = TFT (CS, DC, rst);

/*
* =================================================================
Función: configuración
Devuelve: vacío
Descripción: configuración de la pantalla y el sensor
* =================================================================
*/
Configuración no válida ()
Arranque en serie (115200);
Int icnt = 0;
Biblioteca de inicialización
Serie. Print (F ("init Display...");
Tftscreen.start ();
Serial. Println ().Complete);
Limpiar la pantalla con fondo negro
Tftscreen.background (0, 0, 0);
Establecer el tamaño del texto
Tftscreen.settextsize (1);
Escribir texto de inicialización
Serie. Println ("TFT demo (c) Joe Weise for Az delivery");
Tftscreen.stroke (25525555);
Tftscreen.text ("TFT demo!",6, 30);
Texto ("(c) jorn Weise", 6, 60);
Tftscreen.text ("for Az delivery", 6, 90);
Retraso (5000);
Tftscreen.settextsize (2);
}

/*
* =================================================================
Función: bucle
Devuelve: vacío
Descripción: el bucle principal que hace que el programa funcione
* =================================================================
*/
Bucle no válido ()
Tftscreen. Background (0,0,0);
Generar color aleatorio
Int redrandom = aleatorio (0255);
Int Green Random = aleatorio (0255);
Int bluerandom = aleatorio (0255);

Establecer fuentes aleatorias
Tftscreen.stroke (rojo aleatorio, verde aleatorio, azul aleatorio);

Imprimir la primera línea del contador
Tftscreen.text ("Demo count", 6, 57);
Consejos para convertir Int a char
Carácter Str [8];
Ito a (icnt, Str, 10);
Mostrar contador
Texto (Str, 70, 80);
Icnt +;
Si (icnt > = 100)
Icnt = 0;
Retraso (2000) / /No es la mejor solución, pero funciona muy bien para esta demostración
}
 


Código 5: Contador simple en la pantalla TFT

La figura 8 muestra el medidor en uso. Como puede observar, la conexión se realiza rápidamente. Es curioso como la luz de fondo de la pantalla es bastante brillante.

Figura 8: Contador completo en Nano V3.0

El cableado de ESP32 también es sencillo, observe la Figura 9.

Figura 9: Cableado de ESP32 con la la pantalla TFT

Al igual que el Nano V3.0, para utilizar la pantalla se requiere un total de 7 conexiones. A diferencia del Nano V3.0, el ESP utiliza la librería TFT Library ESPI de Bodmer, que está integrada en el gestor de librerías. Para el ESP32, es necesario modificar el archivo User_Setup.h, que también se encuentra en la carpeta integrada  C:\Users\Username\Documents\Arduino\Librarias\TFT_eSPI. Antes de hacer cambios, se recomienda guardar el archivo original como User_Setup_old.h Un archivo User_Setup.h listo y personalizado se puede encontrar en Mi repositorio GIT .

Puede leer más sobre los programas de librerías en otra publicación del blog.

Figura 10: Subdirectorio de la librería de programas TFT_eSPI

El código fuente, observe el Código 6, es tan simple como siempre. Los comentarios deben hacer que el Código sea más fácil de entender.

Esp32 con 128x160tft
Por jorn Weise
Licencia: GNU GPL 3.0
Fecha de creación: 13 de febrero de 2021
Actualización: 13 de febrero de 2021
//-----------------------------------------------------
Incluye las bibliotecas necesarias
"35; include < TFT" espi.h > / / hardware specific Library
« 35; incluye < spi.h >

A todos les gusta el color.
'35; define el color' u Blue 0x001f
"35; definir verde 0x07e0

Crear objetos
TFT ESPI TFT = TFT ESPI () / /Crear un objeto TFT
International Corporation;
/*
* =================================================================
Función: configuración
Devuelve: vacío
Descripción: configuración de la pantalla y el sensor
* =================================================================
*/
Configuración no válida ()
Icnt = 0;
Arranque en serie (115200);
Serie. Println ("configuración de inicio");
Serie. Println ("inicializar pantalla...");
Configurar la pantalla
Tft.init ();
Serial. Println ().Complete);
Serie. Println ("TFT demo (c) Joe Weise for Az delivery");
Establecer rotación (3);
TFT. Filescreen (TFT Black);
TFT. Set textsize (2);
TFT. Settextcolor (azul);
Establecer cursor (20, 20);
Impresión TFT ("TFT");
TFT. Settextcolor (Verde);
Impresión TFT ("demo");
TFT. Settextsize (1);
Color (TFT blanco);
Establecer cursor (30, 40);
Impresión TFT ("(c) Joe Weise");
Color (TFT blanco);
Establecer cursor (30, 60);
TFT. Print ("for Az delivery");
Retraso (5000);
TFT. Set textsize (2);
}

/*
* =================================================================
Función: bucle
Devuelve: vacío
Descripción: el bucle principal que hace que el programa funcione
* =================================================================
*/
Bucle no válido ()
TFT. Filescreen (TFT Black)Borrar contenido antiguo
Imprimir el primer texto
Establecer cursor (20, 20);
Color (TFT blanco);
TFT. Print ("Demo count");
Contador de impresión
Establecer cursor (80, 60);
TFT. Settextcolor (Verde);
Impresión TFT (icnt);
Icnt +;
Si (icnt > = 100)
Icnt = 0;
Retraso (2000) / /No es la mejor solución, pero funciona muy bien para esta demostración
}

Código 6: Código fuente ESP32 con pantalla TFT

El resultado, vea la Figura 10, muestra el mismo contador que antes, sólo con el ESP32 y con ligeramente diferentes colores y con la posición movida.

Figura 11: Contador completo en ESP32

Si observa TFT o oscurece la habitación, verá claramente la luz de fondo del TFT, observe la Figura 11.

Figura 12: Luz de fondo de la pantalla TFT

Especialmente si instala la pantalla en una carcasa ligeramente más delgada, verá claramente el ligero brillo, marcado en rojo en la Figura 11. Por lo tanto, debe considerar de antemano dónde y cómo quiere instalar tal pantalla.

Resultados

En este publicación ha visto las diferencias entre una pantalla OLED y una TFT y lo que hace que las pantallas sean tan únicas. Como se ha mencionado anteriormente, los pros y los contras no se mostrarán, pero tendrán que ver el funcionamiento que requiera. Pero que se convierta en un OLED o más bien en un TFT depende en gran medida de la tarea y del alcance en el código. Si necesita colores debe optar por TFT. Si prefieren el contraste más fuerte, especialmente en pantallas pequeñas, le conviene trabajar con OLED.

Las librerías utilizadas aquí son sólo un ejemplo, ya que hay otras bibliotecas que pueden hacer lo mismo.

Otros artículos interesantes de blogs con pantallas OLED o TFT están disponibles en AZ-Delivery:

Este y otros proyectos se pueden encontrar en github https://github.com/M3taKn1ght/Blog-Repo.

MuestraEsp-32Para arduinoProyectos para principiantes

4 comentarios

Jörn Weise

Jörn Weise

Hallo,
da ich mich nur im Digitalfunk bewege, war mir dieses Problem nicht bekannt, ist aber natürlich eine Erwähnung wert. Wir werden das noch als negativen Punkt in unsere Liste eintragen.

Norbert

Norbert

Schade dass in diesem Beitrag nicht auf den, aus meiner Sicht, Hauptnachteil der OLED Displays, den Einbrenneffekt, eingegangen wird.
Ich habe aus diesem Grund bereits mehrere OLED- durch TFT-Displays ersetzt.

D. Schwanen

D. Schwanen

Guter ausführlicher Blogbeitrag.

Thomas

Thomas

Die OLED haben noch einen unerwähnten aber nicht unerheblichen Nachteil: Sie produzieren oftmals HF-Störungen. Als Amateurfunker musste ich dies schon leidlich erfahren.

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas