Table des matières

Sommaire Matériels

Adafruit 1.8" 128x160 Color TFT LCD display with MicroSD Card v2 - ST7735R (SPI)

[Mise à jour le 24/12/2021]


1. Description

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.

L’écran couleur 1.8” a 128×160 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.

2. Exemple

initv2.cpp
// Programme : seesawshield18_test
// Carte : Arduino Uno
// Shield écran couleur TFT 1,8'' V2
// Fichier : seesawshield18_test.ino (partiel)
 
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
// Assurez-vous d'avoir installé la bibliothèque Adafruit seesaw!
#include <Adafruit_seesaw.h>
#include <Adafruit_TFTShield18.h>
 
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");
  }
 
}

TELECHARGER

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)

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
init.cpp
// Programme : DemoST7735
// Carte : Arduino Uno
// Shield écran couleur TFT 1,8'' V1 ou breakout
// Fichier : ST7735.ino (partiel)
 
// Bibliothèques
#include <Adafruit_GFX.h> // Bibliothèques graphiques
#include <Adafruit_SPITFT_Macros.h>
#include <Adafruit_SPITFT.h>
#include <gfxfont.h>
#include <Adafruit_ST7735.h> // Bibliothèques spécifiques aux matériels
#include <Adafruit_ST7789.h>
#include <Adafruit_ST77xx.h>
#include <SPI.h> // 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);
}

TELECHARGER

Le programme DemoST7735 complet pour un shield V1 ou un breakout est téléchargeable ici