Dans ce tutoriel, vous apprendrez comment interfacer un écran TFT 1,8 pouce 128×160 avec un driver ST7735 avec un Arduino Uno en utilisant un convertisseur de niveau logique TXS0108E.
L’Arduino Uno et de nombreuses autres cartes Arduino fonctionnent avec une logique 5V, tandis que beaucoup d’écrans TFT, capteurs et autres appareils fonctionnent avec une logique 3,3V. Vous ne pouvez donc souvent pas connecter directement ces appareils à un Arduino sans utiliser un convertisseur de niveau logique qui convertit entre les niveaux 5V et 3,3V.
Les instructions et le code de ce tutoriel fonctionneront avec quelques modifications mineures pour d’autres Arduino et écrans TFT. Les seules exigences sont d’avoir un Arduino avec une logique 5V, un écran TFT avec une logique 3,3V et que l’écran utilise le driver ST7735.
Pièces requises
Pour ce tutoriel, j’ai utilisé un Arduino Uno, un module convertisseur de niveau logique TXS0108E et un écran TFT 1,8 pouce avec une résolution de 128×160 pixels et un circuit driver ST7735. Quelques câbles et une breadboard peuvent aussi être utiles.

Écran TFT 1,8″ ST7735

Convertisseur de niveau logique TXS0108E

Arduino Uno

Câble USB pour Arduino UNO

Jeu de fils Dupont

Breadboard
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.
Module d’écran TFT 1,8″ ST7735
Le module d’écran TFT 1,8″ que nous allons utiliser ici a une résolution de 128×160 pixels avec 65K couleurs RGB. L’image ci-dessous montre le devant et le dos du module d’écran :

Le module utilise le circuit driver ST7735S et est contrôlé via une interface SPI 4 fils. La tension de fonctionnement est de 3,3V et l’écran consomme environ 30mA au maximum.
Notez qu’il existe de nombreuses versions différentes de ce type d’écran TFT. Certains ont un SD card supplémentaire ou un touch display.
Certains intègrent un convertisseur logic level qui permet de connecter le module d’écran à un Arduino fonctionnant en 5V. Celui-ci n’en possède pas, ce qui signifie que nous devons utiliser un convertisseur de niveau logique, sinon vous risquez d’endommager le circuit driver de l’écran.
Il existe des écrans similaires qui utilisent le circuit driver ST7789 au lieu du ST7735S. Le code de ce tutoriel est destiné aux écrans avec le circuit driver ST7735S et ne fonctionnera pas avec d’autres.
Le module convertisseur de niveau logique TXS0108E
Le TXS0108E est un convertisseur de niveau logique bidirectionnel à 8 canaux. Il convertit entre différents niveaux de tension, typiquement 3,3V et 5V. L’image ci-dessous montre une carte breakout typique avec la puce TXS0108E au centre.

Vous pouvez voir les 8 canaux (A1…A8, B1…B8) étiquetés sur la carte. Vous connectez un signal logique 5V à l’un des canaux B et il est converti en niveau logique 3,3V sur le canal A correspondant, par exemple A1 <-> B1.
Le TXS0108E est bidirectionnel, ce qui signifie que A peut être une entrée et B une sortie ou inversement. De plus, il supporte les communications SCM, I²C et SPI, et nous aurons besoin de SPI pour interfacer l’Arduino avec l’écran TFT.
Pour plus d’informations détaillées, consultez la fiche technique du TXS0108E liée ci-dessous :
Comment câbler le convertisseur de niveau logique TXS0108E
Connecter le TXS0108E est simple. Vous devez fournir la tension plus élevée de 5V à la broche VB du côté des canaux B et la tension plus basse de 3,3V à la broche VA du côté des canaux A. Voir le schéma de câblage ci-dessous :

La masse va à GND et il y a une broche OE pour « Output Enable » que vous devez connecter à 3,3V pour activer les canaux.
Comme mentionné précédemment, tous les signaux 5V doivent être connectés aux canaux B et tous les signaux 3,3V aux canaux A. Vous n’avez pas besoin d’utiliser tous les canaux et dans la section suivante, nous connectons l’écran TFT à l’Arduino en utilisant 6 canaux.
Connexion de l’écran TFT 1,8″ ST7735 avec convertisseur de niveau et Arduino Uno
Connecter l’écran TFT à un Arduino Uno via le convertisseur de niveau logique nécessite pas mal de fils et il est facile de faire une erreur. Prenez donc votre temps et faites attention aux bonnes connexions.
Notez aussi que l’étiquetage des broches sur l’écran TFT est un peu déroutant. Il montre des broches SDA et SCL mais comme l’écran utilise une interface SPI, ce ne sont pas les broches SDA et SCL pour I2C ! En fait, SDA correspond à MOSI et SCL à SCLK pour SPI.
Le schéma de câblage suivant vous montre comment connecter l’écran TFT 1,8″ ST7735 via le convertisseur de niveau logique TXS0108E à un Arduino Uno :

Pour simplifier, voici un tableau des connexions à réaliser :
| Arduino UNO | Convertisseur niveau B | Convertisseur niveau A | Écran TFT |
|---|---|---|---|
| 13 (SCLK) | B1 | A1 | SCL |
| 11 (MOSI) | B2 | A2 | SDA |
| 8 (RST) | B3 | A3 | RES |
| 9 (DC) | B4 | A4 | DC |
| 10 (CS) | B5 | A5 | CS |
| 7 (BLK) | B6 | A6 | BL |
| 5V | VB | – | – |
| 3.3V | VA | VCC | |
| 3.3V | OE | ||
| GND | – | GND | GND |
Code pour écran TFT ST7735 avec la bibliothèque Adafruit_ST7735
Dans cette section, nous allons utiliser la bibliothèque Adafruit-ST7735 pour écrire et dessiner sur l’écran TFT 1,8″ ST7735. Pour l’installer, ouvrez simplement le gestionnaire de bibliothèques, cherchez « Adafruit-ST7735 » et cliquez sur le bouton vert INSTALL :

L’installateur vous proposera probablement d’installer les dépendances également. Cliquez sur INSTALL ALL :

Une fois la bibliothèque installée, nous pouvons tester l’écran. Compilez et téléversez simplement le code suivant. Il affiche le texte « Makerguides » avec un cadre jaune sur l’écran :
#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 vous utilisez le SPI matériel, vous n’aurez pas besoin des définitions des broches pour TFT_MOSI et TFT_SCLK. Dans le cas de l’Arduino, les broches pour le SPI matériel sont
- SCLK -> 13
- MISO -> 12
- MOSI -> 11
- SS/CS -> 10
Cependant, si vous utilisez le SPI logiciel, vous devrez les définir et les passer à l’autre constructeur de l’objet tft :
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
Si vous compilez et téléversez le code, vous devriez voir la sortie suivante sur votre écran :

Si vous ne voyez rien, ou si les couleurs sont incorrectes, ou si le texte présente des artefacts, essayez l’un des autres initialiseurs pour l’écran TFT dans le code :
//tft.initB(); tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab //tft.initR(INITR_GREENTAB); // Init ST7735S chip, green tab
Les onglets noirs et onglets verts font référence aux onglets colorés attachés au film de protection de l’écran que ces écrans ont généralement. Par exemple, l’image ci-dessous montre un écran TFT avec un onglet vert :

La couleur de l’onglet est importante car elle indique souvent le type de contrôleur d’écran utilisé. L’onglet vert est généralement pour des contrôleurs plus récents ou alternatifs comme ILI9341, ST7735, ou d’autres modèles spécifiques. L’onglet noir indique un contrôleur plus ancien ou différent, comme ST7735R ou des variantes similaires, qui ont des spécifications légèrement différentes.
Conclusions
Dans ce tutoriel, vous avez appris comment interfacer un écran TFT 1,8 pouce 128×160 avec un driver ST7735 avec un Arduino Uno en utilisant un convertisseur de niveau logique TXS0108E.
Si vous avez un microcontrôleur qui fonctionne avec une logique 3,3V, vous n’aurez pas besoin du convertisseur de niveau logique. Consultez le tutoriel Interface TFT ST7735 Display with ESP32, où nous connectons le même écran TFT à un ESP32.
Si votre écran utilise le driver ST7789 au lieu du ST7735, vous pouvez toujours utiliser le Adafruit-ST7735 Library pour contrôler l’écran avec seulement quelques petites modifications du code.
Si vous avez des commentaires, n’hésitez pas à les laisser dans la section commentaires.
Bon bricolage ; )

