[Mise à jour le 24/12/2021]
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.
// 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"); } }
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 |
// 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); }