4 · Écrans & bus
Écran TFT couleur en SPI
Objectif
Piloter un ST7789 240×240 avec le port SPI matériel.
Pourquoi c'est utile
Le SPI est bien plus rapide que l'I²C : indispensable pour la vidéo.
Matériel nécessaire
- Carte Arduino UNO
- Écran TFT ST7789 (SPI)
Aucun achat requis : tous ces composants sont simulés dans le navigateur.
Étapes
- 01Glissez le composant TFT 240×240 (SPI) sur le canevas.
- 02Gardez DC sur D8 — SCK est D13 et MOSI D11 sur l'UNO.
- 03Chargez le sketch de départ : il initialise le panneau et trace des barres de couleur.
- 04Modifiez le tableau de couleurs pour dessiner votre interface.
Code de départ
// ST7789 240x240 SPI display driven directly — DC on D8, RST on D9, CS on D10.
#include <SPI.h>
#define TFT_DC 8
#define TFT_RST 9
#define TFT_CS 10
void cmd(uint8_t c) {
digitalWrite(TFT_DC, LOW);
digitalWrite(TFT_CS, LOW);
SPI.transfer(c);
digitalWrite(TFT_CS, HIGH);
}
void dat(uint8_t d) {
digitalWrite(TFT_DC, HIGH);
digitalWrite(TFT_CS, LOW);
SPI.transfer(d);
digitalWrite(TFT_CS, HIGH);
}
void window(int x0, int y0, int x1, int y1) {
cmd(0x2A); dat(x0 >> 8); dat(x0); dat(x1 >> 8); dat(x1);
cmd(0x2B); dat(y0 >> 8); dat(y0); dat(y1 >> 8); dat(y1);
cmd(0x2C);
}
void fill(int x, int y, int w, int h, uint16_t color) {
window(x, y, x + w - 1, y + h - 1);
digitalWrite(TFT_DC, HIGH);
digitalWrite(TFT_CS, LOW);
for (long i = 0; i < (long)w * h; i++) {
SPI.transfer(color >> 8);
SPI.transfer(color & 0xFF);
}
digitalWrite(TFT_CS, HIGH);
}
void setup() {
pinMode(TFT_DC, OUTPUT);
pinMode(TFT_RST, OUTPUT);
pinMode(TFT_CS, OUTPUT);
digitalWrite(TFT_CS, HIGH);
SPI.begin();
digitalWrite(TFT_RST, LOW); delay(20);
digitalWrite(TFT_RST, HIGH); delay(50);
cmd(0x01); delay(50); // software reset
cmd(0x11); delay(50); // sleep out
cmd(0x3A); dat(0x55); // 16-bit color
cmd(0x36); dat(0x00); // memory access
cmd(0x21); // inversion on (typical for 240x240 panels)
cmd(0x29); // display on
fill(0, 0, 240, 240, 0x0000);
}
uint16_t bar = 0;
void loop() {
const uint16_t colors[4] = { 0xF800, 0x07E0, 0x001F, 0xFFE0 };
fill(0, (bar % 4) * 60, 240, 60, colors[bar % 4]);
bar++;
delay(400);
}
Ce tutoriel se réalise dans le simulateur Circuitly : le montage et le code sont vérifiés automatiquement à chaque étape.
Questions fréquentes
- Faut-il acheter du matériel pour suivre ce tutoriel ?
- Non. Tout se fait dans le navigateur : Circuitly simule la carte, les composants et le code. Le matériel réel est optionnel si vous voulez reproduire le montage ensuite.
- Quels composants sont utilisés ?
- Carte Arduino UNO, Écran TFT ST7789 (SPI). Ils sont déjà disponibles dans la bibliothèque du simulateur.
- Combien de temps faut-il pour le terminer ?
- Environ 30 minutes, niveau expert, en 4 étapes guidées.
- Quelles connaissances faut-il avant de commencer ?
- Le tutoriel précédent de la série, « Afficheur LCD 16×2 », suffit comme préparation. Aucune installation de logiciel n'est nécessaire.
- Le code est-il fourni et vérifié ?
- Oui : un sketch de départ est fourni, et le simulateur vérifie automatiquement votre câblage et votre code à chaque étape.
Pour les enseignants
Recevez le pack pédagogique : 6 séances clés en main
Progression complète, objectifs, étapes élève et grille d'évaluation — prêt à imprimer, gratuit.
Une adresse, aucun spam : uniquement le pack et les nouveautés classe.
Dans la même série
- Écrire sur un écran OLED
Afficher du texte sur un SSD1306 128×64 via le bus I²C.
- OLED : tracer une courbe
Afficher en direct la valeur de A0 sous forme d'oscillogramme.
- Afficheur LCD 16×2
Écrire deux lignes de texte et un compteur qui s'incrémente.
- Scanner le bus I²C
Lister les adresses des périphériques présents sur le bus.