Bonjour @ tous,
Dans un projet en court de réalisation d'une horloge avec un esp32 et des bandes led rgb, je voudrai y ajouter un petit écran TFT SPI 128x160. J'ai un peu (même beaucoup) galéré pour le mettre en route, mais c'est bon, il fonctionne et je commence à comprendre son fonctionnement.
J'ai trouvé comment afficher un texte, mais c'est à partir des coordonnées (x et y) de départ avec "tft.setCursor(20, 45);" par exemple. Ce que je voudrai c'est centrer les différentes lignes.
Est-ce que quelqu'un aurait un lien où je pourrai trouver les différentes commandes possibles ou m'aider à trouver la solution, s'il vous plait?
Je vous met juste une partie du code que j'utilise car je suis parti d'un code avec plein de fonction (exemple d'affichage) que je n'utilise pas.
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <SPI.h>
// These pins will also work for the 1.8" TFT shield
//ESP32-WROOM
#define TFT_DC 12 //A0
#define TFT_CS 13 //CS
#define TFT_MOSI 14 //SDA
#define TFT_CLK 27 //SCK
#define TFT_RST 0
#define TFT_MISO 0
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST);
int jour = 25;
int mois = 12;
int annee = 2023;
int heure = 20;
int mn = 11;
int sec = 00;
void setup(void)
{
Serial.begin(115200);
Serial.print("Hello! ST77xx TFT Test");
// Use this initializer if you're using a 1.8" TFT
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
Serial.println("Initialized");
uint16_t time = millis();
tft.fillScreen(ST77XX_BLACK);
time = millis() - time;
Serial.println(time, DEC);
delay(500);
tft.setRotation(1);
tft.fillScreen(ST77XX_BLACK);
}
void loop() {
tftDateHeure();
}
void tftDateHeure() {
tft.setCursor(40, 25);
tft.setTextColor(ST77XX_YELLOW);
tft.setTextSize(1);
tft.println("Nous sommes le");
tft.setCursor(20, 45);
tft.setTextColor(ST77XX_GREEN, true);
tft.setTextSize(2);
tft.print(jour);
tft.print("/");
tft.print(mois);
tft.print("/");
tft.println(annee);
tft.println("");
tft.setCursor(65, 75);
tft.setTextColor(ST77XX_YELLOW);
tft.setTextSize(1);
tft.println("Il est");
tft.println("");
tft.setCursor(35, 95);
tft.setTextColor(ST77XX_GREEN, true);
tft.setTextSize(2);
tft.print(heure);
tft.print(":");
tft.print(mn);
tft.print(":");
tft.print(millis() / 1000);
}
Ce que je voudrai centrer c'est :" nous sommes le"
en dessous la date: jj/mm/annee
puis "il est"
et enfin l'heure: hh:mn:sec
Pour ce qui est de "nous sommes le" et "il est", comme c'est du texte fixe j'ai réussi à le centrer visuellement. Mais pour la date et l'heure, le texte n'est pas fixe car il n'affiche pas le 0 des dizaines pour les jour, mois, heure, minute et seconde.
J'avais trouvé, sur le net, la commande "tft.drawCentreString("texte", pos x centrale, y, font);" si je ne me trompe pas, mais quand je compile j'ai ce message d'erreur:
'class Adafruit_ST7735' has no member named 'drawCentreString'
Bon j'avoue je ne suis pas informaticien et si ça se trouve j'ai rien compris et je fais fausse route.
J'espère avoir était clair dans ma demande et je vous remercie par avance de vos réponses.
Amitiés @ tous
