Overleaf Community Edition Server: Latex editor | Luciano's tech see the web in desktop mode to better experience | 468 OS | 303 OS Pi 4B | 72 OS Pi5
T-Display-S3 es una placa de desarrollo cuyo chip de control principal es ESP32-S3. Está equipado con una pantalla LCD a color de 1,9 pulgadas y dos botones programables. Comunicación mediante la interfaz I8080 Conserva el mismo diseño de diseño que T-Display. Puede usar directamente ESP32S3 para comunicación o programación USB.
T-Display-S3 is a development board whose main control chip is ESP32-S3. It is equipped with a 1.9-inch LCD color screen and two programmable buttons.Communication using I8080 interface Retains the same layout design as T-Display. You can directly use ESP32S3 for USB communication or programming.
GitHub:
Esquemático--Schematic:
Top
Bottom
Display
Nosotros no logramos llegar a la versión 2, menos a la 2.0.3 así que nos podemos conformar con la última disponible, ahora llamado Arduino Legacy(De algo me suena):
We didn't manage to get to version 2, let alone 2.0.3, so we can settle for the latest one available, now called Arduino Legacy:
Abrimos la Terminal e ingresamos--Open the Terminal and type:
El primer rm arduino*.tar.xz es para asegurarnos de que no hayas seguido otro tutorial y ya lo hayas descargado o hayas descargado una versión más vieja.
The first rm arduino*.tar.xz it's to make sure you haven't followed another tutorial and already downloaded it or downloaded an older version.
Si necesitas ver una forma más gráfica de instalación ve al tutorial--If you need a more step by step tutorial go aquí--here
Archivo-->Preferencias
File --> Preferences
Clonamos el repositorio del vendedor ya que contiene los ejemplos y librerías, abrimos la Terminal y escribimos:
Clone the repo of the seller then move to the new folder and copy examples and libraries:
Esta última copia puede que se elimine al salir alguna actualización de la placa, pero de esta forma integraremos estos ejemplos a la interfaz del IDE.
This last copy may be removed when a board update comes out, but in this way we will integrate these examples into the IDE interface.
Agregamos la siguiente dirección en el campo--Add this line to Additional Boards Manager URLs:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Presionamos--Press OK y nos dirigimos a--then go to Tools --> Boards Manager
En el campo de búsqueda ingresamos--In the search box look for esp32 e instalamos el único resultado que nos sale--Install the one by Esppressif Systems, aguardamos la instalación cerramos el IDE y lo volvemos a abrir, si nos sale alguna actualización extra de librerías o boards procedemos a actualizarlos.--We wait for the installation, we close the IDE and we open it again, if we get any extra update of libraries or boards we proceed to update them.
En Herramientas debemos elegir como Placa la ESP32S3 Dev Module:
In Tools choose Board--> ESP32 Arduino --> ESP32S3 Dev Module
Y modificar los siguientes parámetros--Modify the next parameters:
Debe quedar así--It should look like this:
Vamos a Archivos --> Ejemplos --> Ejemplos de ESP32S3 Dev Module --> factory
Now go to File --> Examples --> Examples for ESP32S3 Dev Module --> factory
Una vez abierto nos cambiamos a la pestaña--Now go to the tab pin_config.h:
Editamos nuestras credenciales de wifi--Put your WiFi credentials:
Cambiamos la zona horaria--Setup your Timezone:
#define GMT_OFFSET_SEC (3600 * 8) donde--where 3600 es--is 60Min * 60Sec y--and 8 indica la zona horaria--is the timezone GMT/UTC +8.
La cambiamos por la nuestra, en Buenos Aires es--In my case is GMT/UTC -3:
#define GMT_OFFSET_SEC (3600 * -3)
Conectamos nuestra placa a la Raspberry Pi y seleccionamos el Puerto correcto:
We connect our board to the Raspberry Pi and select the correct Port:
Si queremos podemos ver como detecta--We can see how Arduino IDE detect our--nuestra T-Display S3 mediante la opción--with the option Get Board Info
Verificamos, compilamos y subimos el código.--Verify and Upload the code.
Tras conectarse exitosamente veremos la hora y que en segundos se colocara correctamente. Y al presionar el botón KEY podremos cambiar a la Imagen animada del fabricante, si pulsamos nuevamente veremos la información sobre el chip, PSRAM, Flash y la tensión suministrada por la fuente de alimentación, en este caso el puerto USB de la Raspberry Pi.
After connecting successfully we will see the time and that in seconds it will be placed correctly. And by pressing the KEY button we can change to the Animated Image of the manufacturer, if we press again we will see the information about the chip, PSRAM, Flash and the voltage supplied by the power supply, in this case the USB port of the Raspberry Pi.
Clock
Animación--Animation
Info
Listo, hemos compilado nuestro primer ejemplo.
Done!, we have sucessfully compile our first example.
Las extensiones soportadas son--Supported extensions:
.c
.bin
.bmp
.jpg
.gif
.ico
.emf
.wmf
.wbmp
GitHub GFX Library for Arduino(Works for Espressif ESP32):
Vamos a Archivos --> Ejemplos --> Ejemplos de ESP32S3 Dev Module --> arduino_gfx_demo
Now go to File --> Examples --> Examples for ESP32S3 Dev Module --> arduino_gfx_demo
Una vez abierto nos cambiamos a la pestaña--Now go to the tab pin_config.h:
Editamos nuestras credenciales de wifi--Put your WiFi credentials:
Conectamos nuestra placa a la Raspberry Pi y seleccionamos el Puerto correcto:
We connect our board to the Raspberry Pi and select the correct Port:
Verificamos, compilamos y subimos el código.--Verify and Upload the code.
Listo, hemos compilado nuestro segundo ejemplo.
Done!, we have sucessfully compile our second example.
Instalar dependencias:
En este paso puedes imitar la copia de los archivos tft_*.py a la carpeta modules, y así podrás agregar los módulos que quieras a la compilación, recordando que ocupan espacio y pueden llegar a hacer inútil nuestra compilación.
Una vez activado, instalamos esptool:
MicroPython code
La librería define varias constantes de color que puedes usar al dibujar texto, formas, o gráficos en la pantalla. Estas constantes están predefinidas en s3lcd y son comunes para manejar pantallas de este tipo.
s3lcd.BLACK
s3lcd.WHITE
s3lcd.RED
s3lcd.GREEN
s3lcd.BLUE
s3lcd.CYAN
s3lcd.MAGENTA
s3lcd.YELLOW
Cuando creamos un objeto tft con tft_config.config(), obtenemos una instancia de la clase S3LCD. Este objeto tiene varios métodos que podemos usar para interactuar con la pantalla, como dibujar texto, formas, rellenar áreas, desplazar la pantalla, etc. Aquí hay algunos métodos clave:
tft.init():
Inicializa el controlador de la pantalla.
tft.off():
Apaga la pantalla.
tft.on():
Enciende la pantalla.
tft.width():
Devuelve el ancho de la pantalla.
tft.rotation(r):
Establece la rotación de la pantalla lógica en dirección contraria a las agujas del reloj.
r:
Un entero que determina la rotación de la pantalla:
0: Retrato (0 grados)
1: Paisaje (90 grados)
2: Retrato invertido (180 grados)
3: Paisaje invertido (270 grados)
Ejemplo:
Requiere from tft_config import config, import vga1_16x16 as font
tft = config(0)
tft.init()
tft.rotation(1)
tft.text(font,"hola",0,0)
tft.rotation(2)
tft.text(font,"hola",0,0)
tft.rotation(3)
tft.text(font,"hola",0,0)
tft.rotation(0)
tft.text(font,"hola",0,0)
tft.height():
Devuelve el alto de la pantalla.
tft.pixel(x, y, color):
Dibuja un solo píxel en la posición (x, y) con el color especificado.
Ejemplo: tft.pixel(10, 10, s3lcd.YELLOW)
tft.fill(color):
Llena toda la pantalla con el color especificado.
Ejemplo: tft.fill(s3lcd.BLACK)
tft.text(font, text, x, y, color):
Dibuja texto en la pantalla usando una fuente específica, coordenadas (x, y), y un color.
Ejemplo: tft.text(font, "Raspberry Pi Buenos Aires", 0, 0, s3lcd.WHITE)
write(bitmap_font, s, x, y, fg, bg, background_tuple, fill_flag):
Permite mostrar texto en la pantalla utilizando un módulo de fuente de tipo bitmap.
Parámetros:
bitmap_font: Requiere import chango_16 as bitmap_font por ejemplo.
El módulo de fuente bitmap que deseas utilizar para el texto. Este puede ser un módulo creado con la utilidad font2bitmap.
s:
La cadena de texto que deseas mostrar en la pantalla. Asegúrate de que esté codificada en UTF-8.
x:
La coordenada x para el punto superior izquierdo donde se dibujará el texto.
y:
La coordenada y para el punto superior izquierdo donde se dibujará el texto.
fg (opcional):
Color del primer plano (texto). Por defecto, es blanco.
bg (opcional):
Color del fondo. Por defecto, es negro.
background_tuple (opcional):
Una tupla que contiene un buffer de bitmap, ancho y alto para simular transparencia.
fill_flag (opcional):
Este parámetro permite definir cómo se maneja el fondo del texto.
Ejemplo:
tft.write(bitmap_font, "Raspberry Pi Buenos Aires", 5, 5, s3lcd.BLACK, s3lcd.WHITE)
tft.draw(vector_font, s, x, y, fg, scale):
Dibuja algo en las coordenadas (x, y) usando los datos proporcionados.
Parámetros:
vector_font: Requiere import music as vector_font por ejemplo.
El módulo de fuente vectorial que deseas utilizar para el texto. Este módulo debe ser compatible y se puede crear usando utilidades específicas para fuentes.
s:
La cadena de texto que deseas mostrar en la pantalla. Este texto se mostrará en la ubicación especificada.
x:
La coordenada X para el punto inferior izquierdo donde se dibujará el texto.
y:
La coordenada Y para el punto inferior izquierdo donde se dibujará el texto.
fg (opcional):
Color del primer plano (texto). Si no se proporciona, el color predeterminado es blanco.
scale (opcional):
Valor que determina el tamaño del texto. Este valor debe ser mayor que 0 y puede ser un valor de punto flotante o un entero. El valor predeterminado es 1.0.
Ejemplo:
tft.draw(vector_font, "Raspberry Pi Buenos Aires", 0, 10, s3lcd.WHITE, 0.5)
tft.draw_len(vector_font, s, scale):
Define la longitud de los datos que deseas dibujar.
tft.hline(x, y, width, color):
Dibuja una línea horizontal en la posición (x, y) con el ancho y color especificado.
Ejemplo:
tft.hline(10, 20, 100, s3lcd.RED)
tft.vline(x, y, height, color):
Dibuja una línea vertical en la posición (x, y) con la altura y color especificado.
Ejemplo:
tft.vline(10, 10, 100, s3lcd.GREEN)
tft.rect(x, y, width, height, color):
Dibuja un rectángulo en las coordenadas (x, y) con dimensiones width x , height y sin rellenar.
Ejemplo:
tft.rect(10, 10, 50, 50, s3lcd.BLUE)
tft.fill_rect(x, y, width, height, color):
Llena un rectángulo en las coordenadas (x, y) con dimensiones y un color específico.
Ejemplo:
tft.fill_rect(10, 10, 50, 50, s3lcd.BLUE)
tft.circle(x, y, r, color):
Dibuja un círculo centrado en (x, y) con radio r y un color determinado.
Ejemplo:
tft.circle(60, 60, 30, s3lcd.RED)
tft.fill_circle(x, y, r, color):
Llena un círculo con color, centrado en (x, y) con radio r.
Ejemplo:
tft.fill_circle(60, 60, 30, s3lcd.GREEN)
tft.polygon(polygon, x, y, color, angle, center_x, center_y):
Dibuja un polígono en la pantalla en función de los parámetros especificados.
Parámetros:
polygon:
Una lista de tuplas que representan las coordenadas de los vértices del polígono. Por ejemplo, [(x1, y1), (x2, y2), (x3, y3), (x1, y1)].
x:
La coordenada X en la que se dibujará el polígono. Esto puede ser el desplazamiento inicial en el eje X.
y:
La coordenada Y en la que se dibujará el polígono. Esto puede ser el desplazamiento inicial en el eje Y.
color:
El color con de los lados del polígono.
angle:
El ángulo de rotación del polígono, en grados. Esto permite rotar el polígono en torno a su centro.
center_x:
La coordenada X del punto central alrededor del cual se rotará el polígono.
center_y:
La coordenada Y del punto central alrededor del cual se rotará el polígono.
Ejemplo:
Definir los vértices de un triángulo, repitiendo el punto de origen y luego el polígono.
vertices = [(10, 10), (20, 30), (30, 10), (10, 10)].
tft.polygon(vertices, 0, 0, s3lcd.BLUE, 45, 15, 15).
tft.fill_polygon([(x, y)], x, y, color, angle, center_x, center_y):
Dibuja y rellena un polígono con los puntos proporcionados.
Parámetros:
polygon:
Una lista de tuplas que representan las coordenadas de los vértices del polígono. Por ejemplo, [(x1, y1), (x2, y2), (x3, y3), (x1, y1)].
x:
La coordenada X en la que se dibujará el polígono. Esto puede ser el desplazamiento inicial en el eje X.
y:
La coordenada Y en la que se dibujará el polígono. Esto puede ser el desplazamiento inicial en el eje Y.
color:
El color con el que se rellenará el polígono.
angle: Requiere import math
El ángulo de rotación del polígono, en radian [grados * (math.pi/180)]. Esto permite rotar el polígono en torno a su centro.
center_x (opcional):
La coordenada X del punto central alrededor del cual se rotará el polígono.
center_y (opcional):
La coordenada Y del punto central alrededor del cual se rotará el polígono.
Ejemplo:
tft.fill_polygon([(10, 10), (50, 50), (10, 50), (10, 10)], 0, 0, s3lcd.MAGENTA)
Ejemplo con rotación:
tft.fill_polygon([(10, 10), (50, 50), (10, 50), (10, 10)], 0, 0, s3lcd.YELLOW,45*(math.pi/180),50,80)
tft.blit_buffer(buffer, x, y, width, height):
Copia un buffer de píxeles directamente en la pantalla.
tft.bitmap(x, y, index):
Dibuja un bitmap desde un archivo en las coordenadas (x, y). index o file Requiere ser convertido por imgtobitmap.py o monofont2bitmap.py.
Ejemplo:
tft.bitmap(0, 0, 'imagen.bmp')
tft.bounding():
Define un área limitante (bounding box) para gráficos. (Uso específico puede variar).
tft.blit_buffer(buffer, x, y, width, height): Copia un buffer de píxeles directamente en la pantalla.
El "buffer protocol" en MicroPython se refiere a objetos que exponen su memoria como una secuencia continua de bytes. Los tipos de datos que cumplen con este protocolo son:
bytes
bytearray
array (Del módulo array de MicroPython)
Para usar tft.blit_buffer(), el buffer debe ser uno de estos tipos, donde cada píxel está representado en el formato de color requerido (probablemente RGB565 o RGB888).
Debemos crear un buffer en el formato correcto. Normalmente, esto sería un bytearray que contiene los datos de los píxeles que deseas "blitear" a la pantalla.
Escribir en pantalla.
Write on screen.
Método--Method:
text(font, s, x, y[, fg, bg])
font: Fuente elegida.
s: Int, bytes o String entre comillas.
x: Posición x [pixel]
y: Posición y [pixel]
fg: Color de texto.
bg: Color de fondo del texto.
Escriba s (int, string o bytes) en la pantalla utilizando la fuente de mapa de bits especificada con las coordenadas como la esquina superior izquierda del texto. Los argumentos opcionales fg y bg pueden establecer los colores de primer plano y de fondo del texto; de lo contrario, el color de primer plano será BLANCO de forma predeterminada y el color de fondo será NEGRO.
Write s (integer, string or bytes) to the display using the specified bitmap font with the coordinates as the upper-left corner of the text. The optional arguments fg and bg can set the foreground and background colors of the text; otherwise, the foreground color defaults to WHITE, and the background color defaults to BLACK.
Método--Method:
draw(vector_font, s, x, y[, fg, scale])
vector_font: Fuente vectorial elegida.
s: String entre comillas.
x: Posición x [pixel]
y: Posición y [pixel]
fg: Color de texto.
scale: Escala debe ser mayor a cero, int/float
Dibujamos texto en la pantalla utilizando la fuente vectorial Hershey especificada con las coordenadas como la esquina inferior izquierda del texto. El color de primer plano del texto se puede establecer mediante el argumento opcional fg. De lo contrario, el color de primer plano por defecto será BLANCO. El tamaño del texto se puede escalar especificando un valor de escala. El valor de escala debe ser mayor que 0 y puede ser un valor de float o int. El valor de escala por defecto es 1,0. Consulte README.md en el directorio vector/fonts, por ejemplos de fuentes y el directorio utils para un programa de conversión de fuentes.
Draw text to the display using the specified Hershey vector font with the coordinates as the lower-left corner of the text. The foreground color of the text can be set by the optional argument fg. Otherwise, the foreground color defaults to WHITE. The size of the text can be scaled by specifying a scale value. The scale value must be larger than 0 and can be a floating-point or an integer value. The scale value defaults to 1.0. See the README.md in the vector/fonts directory, for example fonts and the utils directory for a font conversion program.
Método--Method:
write(bitmap_font, s, x, y[, fg, bg, background_tuple, fill_flag])
bitmap_font: Fuente bitmap elegida.
s: String entre comillas.
x: Posición x [pixel]
y: Posición y [pixel]
fg: Color de texto.
bg: Color de fondo del texto.
background_tuple: Conteniendo bitmap_buffer, width, height.
fill_flag: Este parámetro controla si el área de fondo debe ser rellenada con el color de fondo. Es opcional y generalmente no se usa a menos que quieras manejar la manera en que se renderiza el texto.
Escribimos texto en la pantalla utilizando el módulo de fuente de mapa de bits Monospace o proporcional especificado con las coordenadas como la esquina superior izquierda del texto. Los colores de primer plano y de fondo del texto se pueden establecer mediante los argumentos opcionales fg y bg; de lo contrario, el color de primer plano será BLANCO por defecto y el color de fondo será NEGRO.
La transparencia se puede emular proporcionando un background_tuple que contenga (bitmap_buffer, ancho, alto). Este es el mismo formato utilizado por el método jpg_decode. Consulte examples/T-DISPLAY/clock/clock.py para ver un ejemplo.
Consulte README.md en el directorio truetype/fonts para ver fuentes de ejemplo. Devuelve el ancho de la cadena impresa en píxeles. Acepta cadenas codificadas en UTF8.
La utilidad font2bitmap crea módulos de mapa de bits compatibles de 1-bit por píxel a partir de fuentes True Type proporcionales o Monospace. El tamaño de los caracteres, los colores de primer plano y de fondo y los caracteres del módulo de mapa de bits se pueden especificar como parámetros. Utilice la opción -h para obtener más detalles. Si se especifica un buffer_size durante la inicialización de la pantalla, debe ser lo suficientemente grande como para contener el carácter más ancho (HEIGHT * MAX_WIDTH * 2).
Write text to the display using the specified proportional or Monospace bitmap font module with the coordinates as the upper-left corner of the text. The foreground and background colors of the text can be set by the optional arguments fg and bg, otherwise the foreground color defaults to WHITE and the background color defaults to BLACK.
Transparency can be emulated by providing a background_tuple containing (bitmap_buffer, width, height). This is the same format used by the jpg_decode method. See examples/T-DISPLAY/clock/clock.py for an example.
See the README.md in the truetype/fonts directory for example fonts. Returns the width of the string as printed in pixels. Accepts UTF8 encoded strings.
The font2bitmap utility creates compatible 1 bit per pixel bitmap modules from Proportional or Monospaced True Type fonts. The character size, foreground, background colors, and characters in the bitmap module may be specified as parameters. Use the -h option for details. If you specify a buffer_size during the display initialization, it must be large enough to hold the widest character (HEIGHT * MAX_WIDTH * 2).