4 · Écrans & bus
Écran TFT couleur en SPI
Expert30 min
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.
É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.
Tutoriels suivants
- É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.