Skip to Content

Interfaz Arduino Uno con ST7735 TFT usando un convertidor de nivel

Interfaz Arduino Uno con ST7735 TFT usando un convertidor de nivel

En este tutorial aprenderás cómo conectar una pantalla TFT de 1.8 pulgadas y resolución 128×160 con un controlador ST7735 a un Arduino Uno usando un convertidor de nivel lógico TXS0108E.

El Arduino Uno y muchas otras placas Arduino funcionan con lógica de 5V, mientras que muchas pantallas TFT, sensores y otros dispositivos operan con lógica de 3.3V. Por lo tanto, a menudo no puedes conectar directamente estos dispositivos a un Arduino, sino que necesitas usar un convertidor de nivel lógico que convierta entre los niveles de 5V y 3.3V.

Las instrucciones y el código de este tutorial funcionarán con algunos cambios menores para otros Arduinos y pantallas TFT. Los únicos requisitos son que tengas un Arduino con lógica de 5V, una pantalla TFT con lógica de 3.3V y que la pantalla use el controlador ST7735.

Partes necesarias

Para este tutorial usé un Arduino Uno, un módulo convertidor de nivel lógico TXS0108E y una pantalla TFT de 1.8 pulgadas con resolución de 128×160 píxeles y un controlador ST7735. También pueden ser útiles algunos cables y una protoboard.

Pantalla TFT ST7735 de 1.8″

Convertidor de nivel lógico TXS0108E

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cable USB para Arduino UNO

Dupont wire set

Juego de cables Dupont

Half_breadboard56a

Protoboard

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Módulo de pantalla TFT ST7735 de 1.8″

El módulo de pantalla TFT de 1.8″ que vamos a usar tiene una resolución de 128×160 píxeles con 65K colores RGB. La imagen a continuación muestra el frente y la parte trasera del módulo de pantalla:

Front and Back of 1.8" TFT ST7735 Display Module
Frontal y trasera del módulo de pantalla TFT ST7735 de 1.8″ (source)

El módulo usa el chip controlador ST7735S y se controla mediante una interfaz SPI de 4 hilos. El voltaje de operación es de 3.3V y la pantalla consume alrededor de 30mA como máximo.

Ten en cuenta que existen muchas versiones diferentes de este tipo de pantalla TFT. Algunas tienen un SD card adicional o un touch display.

Algunas de ellas tienen un convertidor logic level incorporado que permite conectar el módulo de pantalla a un Arduino que funciona a 5V. Esta aquí no lo tiene, lo que significa que necesitamos usar un convertidor de nivel lógico para no dañar el chip controlador de la pantalla.

Existen pantallas similares que usan el controlador ST7789 en lugar del ST7735S. El código de este tutorial es para pantallas con el controlador ST7735S y no funcionará con otros.

El módulo convertidor de nivel lógico TXS0108E

El TXS0108E es un convertidor de nivel lógico bidireccional de 8 canales. Convierte entre diferentes niveles de voltaje, típicamente 3.3V y 5V. La imagen a continuación muestra una placa breakout típica con el chip TXS0108E en el centro.

Breakout board for TXS0108E Logic Level Shifter
Placa breakout para el convertidor de nivel lógico TXS0108E

Puedes ver los 8 canales (A1A8, B1B8) etiquetados en la placa. Conectas una señal lógica de 5V a uno de los canales B y se convierte a niveles lógicos de 3.3V en el canal A correspondiente, por ejemplo A1 <-> B1.

El TXS0108E es bidireccional, lo que significa que A puede ser entrada y B salida o viceversa. Además, soporta comunicación SCM, I²C y SPI, y necesitaremos SPI para conectar el Arduino con la pantalla TFT.

Para más información detallada, consulta la hoja de datos del TXS0108E enlazada abajo:

Cómo cablear el convertidor de nivel lógico TXS0108E

Conectar el TXS0108E es sencillo. Debes suministrar el voltaje más alto de 5V al pin VB en el lado de los canales B y el voltaje más bajo de 3.3V al pin VA en el lado de los canales A. Mira el diagrama de conexiones a continuación:

La tierra va a GND y hay un pin OE para «Output Enable» que debes conectar a 3.3V para habilitar los canales.

Como se mencionó antes, todas las señales de 5V deben conectarse a los canales B y todas las señales de 3.3V a los canales A. No necesitas usar todos los canales y en la siguiente sección conectamos la pantalla TFT al Arduino usando 6 canales.

Conectando la pantalla TFT ST7735 de 1.8″ con convertidor de nivel y Arduino Uno

Conectar la pantalla TFT a un Arduino Uno a través del convertidor de nivel lógico requiere bastantes cables y es fácil equivocarse. Así que tómate tu tiempo y asegúrate de hacer las conexiones correctas.

También ten en cuenta que la etiqueta de los pines en la pantalla TFT es un poco confusa. Muestra pines SDA y SCL, pero como la pantalla tiene una interfaz SPI, estos no son los pines SDA y SCL para I2C. En cambio, SDA corresponde a MOSI y SCL a SCLK para SPI.

El siguiente diagrama de conexiones te muestra cómo conectar la pantalla TFT ST7735 de 1.8″ a través del convertidor de nivel lógico TXS0108E a un Arduino Uno:

Connecting TFT ST7735 Display with TXS0108E and Arduino
Conexión de pantalla TFT ST7735 con TXS0108E y Arduino

Para simplificar, aquí tienes una tabla con las conexiones que debes hacer:

Arduino UNOConvertidor Nivel Lógico BConvertidor Nivel Lógico APantalla TFT
13 (SCLK)B1A1SCL
11 (MOSI)B2A2SDA
8 (RST)B3A3RES
9 (DC)B4A4DC
10 (CS)B5A5CS
7 (BLK)B6A6BL
5VVB
3.3VVAVCC
3.3VOE
GNDGNDGND

Código para pantalla TFT ST7735 con la librería Adafruit_ST7735

En esta sección usaremos la librería Adafruit-ST7735 para escribir y dibujar en la pantalla TFT ST7735 de 1.8″. Para instalarla, simplemente abre el Library Manager, busca «Adafruit-ST7735» y haz clic en el botón verde INSTALL:

Adafruit-ST7735 in Library Manager
Adafruit-ST7735 en el Library Manager

El instalador probablemente te pedirá instalar las dependencias también. Haz clic en INSTALL ALL:

Install the dependencies for Adafruit-ST7735 Library
Instalar dependencias para la librería Adafruit-ST7735

Con la librería instalada, ahora podemos probar la pantalla. Solo compila y sube el siguiente código. Imprime el texto «Makerguides» con un marco amarillo en la pantalla:

#include <Adafruit_GFX.h>     
#include <Adafruit_ST7735.h>  

#define TFT_CS    10   
#define TFT_RST   8  
#define TFT_DC    9   
// #define TFT_MOSI  11  // SDA // HW MOSI
// #define TFT_SCLK  13  // SCL // HW SCLK
// #define TFT_MISO  12  // not used
#define TFT_BL    7   // LED back-light


Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);  // hardware SPI
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

void setup(void) {
  pinMode(TFT_BL, OUTPUT);
  digitalWrite(TFT_BL, HIGH); 

  //tft.initB();
  tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
  //tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab
  //tft.setSPISpeed(27000000);

  tft.setRotation(1);
  tft.fillScreen(ST77XX_BLACK);

  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(2);
  tft.setCursor(15, 50);
  tft.println("Makerguides");
  tft.drawRect(10, 40, 145, 40, ST77XX_YELLOW);
}

void loop() { }

Si usas SPI hardware no necesitarás definir los pines para TFT_MOSI y TFT_SCLK. En el caso del Arduino, los pines para SPI hardware son

  • SCLK -> 13
  • MISO -> 12
  • MOSI -> 11
  • SS/CS -> 10

Sin embargo, si usas SPI por software necesitarás definirlos y pasarlos al otro constructor del objeto tft:

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

Si compilas y subes el código, deberías ver la siguiente salida en tu pantalla:

Output on TFT with Adafruit_ST7735 Library
Salida en TFT con la librería Adafruit_ST7735

Si no ves nada, o los colores están mal, o el texto muestra artefactos, prueba con otro de los inicializadores para la pantalla TFT en el código:

  //tft.initB();
  tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab
  //tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab

La pestaña negra y la pestaña verde se refieren a las pestañas de color que suelen venir pegadas en el protector de pantalla de estas pantallas. Por ejemplo, la imagen a continuación muestra una pantalla TFT con pestaña verde:

Pantalla TFT con pestaña verde (source)

El color de la pestaña es importante porque suele indicar el tipo de controlador de pantalla usado. La Pestaña verde es típicamente para controladores más nuevos o alternativos como ILI9341, ST7735 u otros modelos específicos. La Pestaña negra indica un controlador más antiguo o diferente, como ST7735R o variantes similares, que tienen especificaciones ligeramente distintas.

Conclusiones

En este tutorial aprendiste cómo conectar una pantalla TFT de 1.8 pulgadas y resolución 128×160 con un controlador ST7735 a un Arduino Uno usando un convertidor de nivel lógico TXS0108E.

Si tienes un microcontrolador que funciona con lógica de 3.3V no necesitarás el convertidor de nivel lógico. Echa un vistazo al tutorial Interface TFT ST7735 Display with ESP32, donde conectamos la misma pantalla TFT a un ESP32.

Si tu pantalla usa el controlador ST7789 en lugar del ST7735, aún puedes usar la Adafruit-ST7735 Library para controlar la pantalla y solo necesitarás hacer pequeños cambios en el código.

Si tienes algún comentario, no dudes en dejarlo en la sección de comentarios.

¡Feliz bricolaje ; )