[[matériels:accueilmatériels|{{ :iconemaison.jpg?nolink&25|Sommaire Matériels}}]]
===== Adafruit 1.8" 128x160 Color TFT LCD display with MicroSD Card v2 - ST7735R (SPI) =====
[Mise à jour le 24/12/2021]
{{ :materiels:afficheurs:langfr-330px-arduino_logo.svg.png?nolink&150|}}
* **Ressources**
* **Adafruit**
* Produit Adafruit 1.8" Color TFT Shield w/microSD and Joystick - v 2.
* Tutoriel : Testing the Shield
* **Lectures connexes**
* Les afficheurs graphiques : généralités et primitives
* Bibliothèque - Adafruit GFX Graphics Library
* 0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)
* Adafruit 1,3" 128x64 OLED FeatherWing - SH1107 + 3 buttons (I2C)
* **Distributeur**
* **Gotronic** : Shield écran couleur TFT 1,8'' ADA802
{{ :arduino:adafruit_1.8_color_tft_shield_wmicrosd_and_joystick_v_2.jpg?nolink&600 |}}
----
==== 1. Description ====
{{ :arduino:i2cspi.png?nolink&100|}}
Cette carte contient un écran **1.8" TFT**, un connecteur pour carte **microSD**, un **joystick** à **5 directions** et **trois boutons**. Comme l'**écran** n'utilise que 4 broches pour communiquer en **SPI** et possède son propre buffer, il peut facilement être utilisé pour ajouter un écran et une interface à un montage sans limiter la mémoire ou les broches du microcontrôleur.
Ce shield est compatible avec le format 'Arduino R3'. Il est utilisable avec tous les Arduinos ou Metros, y compris les Metros M0 ou M4, Arduino Mega, Zero, etc. La gestion des **boutons** et du **joystick** se fait à l’aide du port **I2C**, de sorte que seules 2 broches sont nécessaires pour communiquer avec les 8 commutateurs.
{{ :arduino:usd4g.jpg?nolink&100|}}
L’écran couleur 1.8" a **128x160 px**. Le pilote TFT (ST7735R) peut afficher des couleurs sur **18 bits** (**262144 nuances** !).
Il est possible d’afficher des images **bitmaps** couleur à partir d’une carte microSD formatée (**FAT16** / **FAT32**).
Pour afficher du texte, des formes, des lignes, des pixels, etc., le shield utilise les broches **SPI** (**SCK / MOSI / MISO**), **I2C** (**SDA** & **SCL**) et numérique **#8**. Pour la carte microSD, il a également besoin de **#4**.
* **Caractéristiques**
* 1.8" diagonal LCD TFT display
* Physical dimensions: 2.71" (69mm) width, 2.1" (53.5mm) height, 0.27" (6.94mm) thickness (top of joystick)
* 128x160 resolution, 18-bit (262,144) color
* 4 wire SPI digital interface
* Built-in microSD slot - uses 2 more digital lines
* 5V compatible! Use with 3.3V or 5V logic Arduinos
* Onboard 3.3V @ 150mA LDO regulator
* 2 white LED backlight, transistor connected. PWM controlled via I2C seesaw chip
* Comes with header, requires soldering!
* Display current draw is mostly based on the backlight, with full backlight the current draw is ~100mA, this does not include the SD Card. SD cards can draw 20-100mA based on read/write. Measure current draw in circuit to get precise numbers.
* **Connexions**
* SCK - Horloge SPI
* MOSI - SPI Data
* Digital 10 - Sélection de puce
* Digital 8 - Sélection de données / commandes
* **Bibliothèques à installer dans l'IDE Arduino ou dans PlatformIO (VSCode)**
* Adafruit seesaw library
* Adafruit gfx library
* Adafruit ST7735 and ST7789 library
* SD Built-In
====2. Exemple ====
* //Un premier exemple pour tester le shield// \\ Arduino Examples -> Examples from Custom Libraries -> Adafruit_ST7735_and_ST7789_Library -> **seesaw_shield18_test.ino**
// Programme : seesawshield18_test
// Carte : Arduino Uno
// Shield écran couleur TFT 1,8'' V2
// Fichier : seesawshield18_test.ino (partiel)
#include
#include
#include
// Assurez-vous d'avoir installé la bibliothèque Adafruit seesaw!
#include
#include
Adafruit_TFTShield18 ss; // Constructeur
// L'écran TFT et la carte SD partagent l'interface SPI.
// Pour la carte Arduino, le bus SPI est disponible sur
// pin 11 = MOSI, pin 12 = MISO, pin 13 = SCK.
#define SD_CS 4 // Sélection de la carte SD sur le Shield V2
#define TFT_CS 10 // Sélection de l'afficheur TFT sur le Shield V2
#define TFT_DC 8 // Données/commandes line de l'afficheur TFT sur le Shield V2
#define TFT_RST -1 // Le reset de l'afficheur TFT est géré par seesaw !
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Constructeur
void setup()
{
Serial.begin(9600);
while (!Serial)
;
// On désactive l'afficheur et la carte SD
pinMode(TFT_CS, OUTPUT);
digitalWrite(TFT_CS, HIGH);
pinMode(SD_CS, OUTPUT);
digitalWrite(SD_CS, HIGH);
// Démarrage de la puce Seesaw
if (!ss.begin())
{
Serial.println("seesaw ne peut pas être initialisé!");
while (1)
;
}
Serial.println("seesaw démarré");
Serial.print("Version: ");
Serial.println(ss.getVersion(), HEX);
// Désactivation du rétroéclairage
ss.setBacklight(TFTSHIELD_BACKLIGHT_OFF);
// Reset de l'afficheur TFT
ss.tftReset();
// Initialisation de l'afficheur 1.8" TFT
tft.initR(INITR_BLACKTAB); // Initialisation de la puce ST77355, fond d'écran noir
Serial.println("TFT OK!");
tft.fillScreen(ST77XX_CYAN); // écran cyan
// Activation du rétroéclairage (100%)
// ss.setBacklight(TFTSHIELD_BACKLIGHT_ON);
// ou 30%
// ss.setBacklight(TFTSHIELD_BACKLIGHT_ON / 3);
// ou éclairage progressif
for (int32_t i = TFTSHIELD_BACKLIGHT_OFF; i < TFTSHIELD_BACKLIGHT_ON; i += 100)
{
ss.setBacklight(i);
delay(1);
}
delay(100);
tft.fillScreen(ST77XX_RED); // fond d'écran rouge
delay(100);
tft.fillScreen(ST77XX_GREEN); // fond d'écran vert
delay(100);
tft.fillScreen(ST77XX_BLUE); // fond d'écran bleu
delay(100);
tft.fillScreen(ST77XX_BLACK); // fond d'écran noir
tft.setTextSize(1);
tft.setTextColor(ST77XX_WHITE); // texte blanc
tft.setCursor(0, 0);
tft.print("Presser les boutons");
}
uint8_t buttonhistory = 0;
void loop()
{
uint32_t buttons = ss.readButtons();
tft.setTextSize(3);
if(! (buttons & TFTSHIELD_BUTTON_DOWN)){
tft.setTextColor(ST77XX_RED);
tft.setCursor(0, 10);
tft.print("Bas ");
buttonhistory |= 1;
}
if(! (buttons & TFTSHIELD_BUTTON_LEFT)){
tft.setTextColor(ST77XX_YELLOW);
tft.setCursor(0, 35);
tft.print("Gauche ");
buttonhistory |= 2;
}
if(! (buttons & TFTSHIELD_BUTTON_UP)){
tft.setTextColor(ST77XX_GREEN);
tft.setCursor(0, 60);
tft.print("Haut");
buttonhistory |= 4;
}
if(! (buttons & TFTSHIELD_BUTTON_RIGHT)){
tft.setTextColor(ST77XX_BLUE);
tft.setCursor(0, 85);
tft.print("Droit");
buttonhistory |= 8;
}
if(! (buttons & TFTSHIELD_BUTTON_1)){
tft.setTextColor(ST77XX_BLUE);
tft.setCursor(0, 140);
tft.print("1");
buttonhistory |= 16;
}
if(! (buttons & TFTSHIELD_BUTTON_2)){
tft.setTextColor(ST77XX_GREEN);
tft.setCursor(50, 140);
tft.print("2");
buttonhistory |= 32;
}
if(! (buttons & TFTSHIELD_BUTTON_3)){
tft.setTextColor(ST77XX_YELLOW);
tft.setCursor(100, 140);
tft.print("3");
buttonhistory |= 64;
}
if (! (buttons & TFTSHIELD_BUTTON_IN)) {
tft.setTextColor(ST77XX_MAGENTA);
tft.setCursor(0, 110);
tft.print("SELECT");
}
}
**Code complet avec la gestion de la carte SD** \\ Arduino Examples -> Examples from Custom Libraries -> Adafruit_ST7735_and_ST7789_Library -> **seesaw_shield18_test.ino**
==== 2. Breakout ou Shield V1 (ARCHIVE) ====
{{ :arduino:afficheurs:g54dc5d8061428-v1.png?nolink&200|}}
* **Caractéristiques**
* Alimentation: 3,3 ou 5 Vcc
* Interface SPI
* Résolution: 160 x 128 pixels
* Couleurs: 18 bits (262144 couleurs)
* Rétro-éclairage à leds
* Port micro-SD (carte non incluse)
* Dimensions: 70 x 54 x 12 mm \\ \\
* **Brochage**
* Compatible Arduino Uno R3.
^ Désignation ^ Description ^ Câblage Uno ^
| ** MISO** | **SPI Master In Slave Out**. Utilisée pour la carte SD mais pas pour l'écran TFT qui est en écriture seule | **MISO(D12)** |
| **MOSI** | **SPI Master Out Slave In**. Utilisée pour envoyer des données du microcontrôleur à la carte SD et / ou au TFT | **MOSI(D11)** |
| **SCLK** | **SPI** : horloge | **SCK(D13)** |
| **TCS** | **SPI** : sélection de la puce TFT | **D10** |
| **DC** | **Sélection** : données ou commande pour l'afficheur | **D8** |
| **CCS** | **Sélection**. Utilisée pour lire la carte SD | **D4** |
| **RST** | **Réinitialisation** de l'afficheur| **D9** |
* **Bibliothèques à installer dans l'IDE Arduino**
* Adafruit gfx library
* Adafruit ST7735 and ST7789 library
* TFT Built-In
* Adafruit ImageReader Library
* **Exemples**
* //Un premier exemple pour tester le shield// \\ Arduino Examples -> Examples from Custom Libraries -> Adafruit_ST7735_and_ST7789_Library -> **shieldtest.ino** {{ :arduino:exseesawaff.png?nolink |}}
* //Un autre exemple pour afficher une image **bitmap** située sur la carte SD// \\ Arduino Examples -> Examples from Custom Libraries -> Adafruit_ImageReader_Library -> **ShieldST7735.ino**
* **Initialisation**
// Programme : DemoST7735
// Carte : Arduino Uno
// Shield écran couleur TFT 1,8'' V1 ou breakout
// Fichier : ST7735.ino (partiel)
// Bibliothèques
#include // Bibliothèques graphiques
#include
#include
#include
#include // Bibliothèques spécifiques aux matériels
#include
#include
#include // Communication sur un Bus SPI
// Configuration des broches du micro pour commander un afficheur à ST7735
// Pour la sélection du ST7735, vous pouvez utiliser 2 ou 3 broches
// Ces broches fonctionneront également pour le shield TFT de 1,8 "
#define TFT_CS 10 // Cheap Select (Sélection du composant)
#define TFT_RST 9 // Peut être connectéé à la broche de remise à zéro (RST) de l'Arduino
// dans ce cas, définissez cette broche #define sur 0!
#define TFT_DC 8 // Sélection d'une Donnée / Commande
// Option 1 (recommandée): Utiliser l'interface SPI matérielle
// (pour une UNO SPI CLK = 13 et SPI MOSI = 11). La broche 10 doit être
// une sortie. C'est beaucoup plus rapide, mais également nécessaire si vous voulez
// commander une carte micro SD
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Constructeur
// Option 2: utiliser n'importe quelle broche (SPI Soft) mais un peu plus lent!
#define TFT_SCLK 13 // A choisir parmi les GPIO
#define TFT_MOSI 11
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
void setup()
{
// Initialisation d'un afficheur TFT 1.8"
tft.initR(INITR_BLACKTAB); // initialise un circuit ST7735S
tft.fillScreen(ST7735_BLACK);
}
Le programme //**DemoST7735**// complet pour un shield V1 ou un breakout est téléchargeable [[https://webge.fr/doc/wikis/code/Arduino/ARD_Uno_Afficheur_Adafruit_ST7735.zip|ici]]