ecriture en miroir tft lcd spfd 5408

je n'ai qu'un an d'apprentissage arduino
je teste des codes arduino et quelque soit le code le texte est "inversé" en "miroir" par exemple "bonjour" s'ecrit " ruojnob " quelque soit l'orientation

merci de me donner un exemple qui tourne à l'endroit
roland

Bonjour,

Poster votre code ...

@+

oici le code:

// Modifié pour la bibliothèque SPFD5408 par Joao Lopes
// Version 0.9.2 - Rotation pour Mega et écran initial
// *** SPFD5408 change – Begin
#include <SPFD5408_Adafruit_GFX.h> // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>
// *** SPFD5408 change – End

// Les broches de contrôle de l’écran LCD peuvent être affectées à tout
// broches analogiques … mais nous utiliserons les broches analogiques car cela nous permet de
// doublez les broches avec l’écran tactile (voir l’exemple de peinture TFT).
#define LCD_CS A3 // Chip Select passe à Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Peut alternativement simplement se connecter

// Attribuez des noms lisibles à certaines valeurs
//de couleur 16 bits courantes:
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Si vous utilisez le bouclier, toutes les lignes de contrôle et de données sont fixes, et
// une déclaration plus simple peut éventuellement être utilisée:
// Adafruit_TFTLCD tft;

// – Installer
//********************************************
void setup(void) {
Serial.begin(9600);
// progmemPrintln(PSTR(“TFT LCD test”));
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
// progmemPrintln(PSTR(“Using Adafruit 2.8” TFT Arduino Shield Pinout"));
#else
// progmemPrintln(PSTR(“Using Adafruit 2.8” TFT Breakout Board Pinout"));
#endif
tft.reset();

// *** SPFD5408 change - Begin

//*******************************
tft.begin(0x9341); // SDFP5408
// tft.begin(0x9481);
tft.setRotation(4); //1 paysage 2 portrait 3 paysage
// Besoin de Mega, veuillez changer pour
//votre choix ou rotation initiale
// *** SPFD5408 change - Fin
//*******************************
// progmemPrintln(PSTR(“Benchmark Time (microseconds)”));
//*******************************
// progmemPrint(PSTR("Screen fill "));
// Serial.println(testFillScreen());
delay(500);
//*******************************
// progmemPrint(PSTR("Text "));
Serial.println(“test_texte”);
delay(0);
//*******************************
// progmemPrint(PSTR("Lines "));
Serial.println(“testLines(CYAN)”);
delay(0);
//*******************************
// progmemPrint(PSTR("Horiz/Vert Lines "));
Serial.println(“testFastLines(RED, BLUE)”);
delay(0);
//*******************************
// progmemPrint(PSTR("Rectangles (outline) "));
Serial.println(“testRects(GREEN)”);
delay(0);
//*******************************
// progmemPrint(PSTR("Rectangles (filled) "));
Serial.println(“testFilledRects(YELLOW, MAGENTA)”);
delay(0);
//*******************************
// progmemPrint(PSTR("Circles (filled) "));
Serial.println(“testFilledCircles(10, MAGENTA)”);
//*******************************
// progmemPrint(PSTR("Circles (outline) "));
Serial.println(“testCircles(10, WHITE)”);
delay(0);
//*******************************
// progmemPrint(PSTR("Triangles (outline) "));
Serial.println(“testTriangles()”);
delay(0);
//*******************************
// progmemPrint(PSTR("Triangles (filled) "));
Serial.println(“testFilledTriangles()”);
delay(0);
//*******************************
// progmemPrint(PSTR("Rounded rects (outline) "));
Serial.println(“testRoundRects()”);
delay(0);
//*******************************
// progmemPrint(PSTR("Rounded rects (filled) "));
Serial.println(“testFilledRoundRects()”);
delay(0);
//*******************************
// progmemPrintln(PSTR(“Done!”));
}
//*******************************
void loop(void) {
test_texte();
delay(200);
}
//*******************************
/*
unsigned long testFillScreen() {//fonction remplissae ecran
unsigned long start = micros();
tft.fillScreen(BLACK);
tft.fillScreen(RED);
tft.fillScreen(GREEN);
tft.fillScreen(BLUE);
tft.fillScreen(BLACK);
return micros() - start;
}
/
//
******************************
void test_texte(){
//unsigned long testText() {//fonction affichage texte
tft.fillScreen(BLACK);
// unsigned long start = micros();
tft.setCursor(0, 100);//x et y
tft.setTextColor(WHITE); tft.setTextSize(3);
tft.println(“Hello World!”);

}

Il semble que cette bibliothèque gère mal la rotation d'écran. Essaie de changer l'argument de tft.setRotation(4);

tft.setRotation(2);

Tu peux essayer de 0 à 3. Je pense que 4 n'est pas une valeur correcte.

imperturbable..,
rien ne change de 1 a 4
je me pose une question a pros de la ligne 52
tft.begin(0x9341); ..................................... ???
et le fait que ce soit vraiment une inversion graphique
et non une inversion de texte

pour cet ecran quelle(s) autre(s) bibliotheque puis-je utiliser?

roland

De quel écran s'agit-il exactement ? As-tu une datasheet, une photo, un lien vers le site d'achat ?

voici qqs indications:
2,4 pouces TFT LCD:

Coloré, 18-bit 262 000 nuances différentes
Écran tactile résistif à 4 fils
Résolution 240 x 320
Contrôleur ILI9340 avec tampon vidéo intégré RAM
Interface numérique 8 bits, plus 4 lignes de contrôle
Utilise les broches numériques 5-13 et analogiques 0-3. Cela signifie que vous pouvez utiliser les broches numériques 2, 3 et analogiques 4 et 5. La broche 12 est disponible si vous n'utilisez pas le micro SD
5V compatible, utilisez la logique 3.3V ou 5V
Taille: 71 x 52 x 7mm
Téléchargement du pilote ILI9341: files.banggood.com/2017/SKU706879.zip
Téléchargement du pilote HX8347: http://files.banggood.com/2017/11/2.4inch__HX8347G_V1.0.zip
ILI9340 télécharger le pilote: http://myosuploads3.banggood.com/products/20190905/20190905023050driver.rar

Avant de continuer poste ton code du message #2 entre les balises adéquate, réfère toi à la charte du forum dans les premiers sujet en haut de page d'accueil.

Faute de quoi >>>> poubelle.

Ce serait dommage car on a les infos pour trouver une solution...

voici le code balisé

// Modifié pour la bibliothèque SPFD5408 par Joao Lopes
// Version 0.9.2 - Rotation pour Mega et écran initial
// *** SPFD5408 change -- Begin
#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>
// *** SPFD5408 change -- End

// Les broches de contrôle de l'écran LCD peuvent être affectées à tout
// broches analogiques ... mais nous utiliserons les broches analogiques car cela nous permet de
// doublez les broches avec l'écran tactile (voir l'exemple de peinture TFT).
#define LCD_CS A3 // Chip Select passe à Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Peut alternativement simplement se connecter

// Attribuez des noms lisibles à certaines valeurs
//de couleur 16 bits courantes:
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Si vous utilisez le bouclier, toutes les lignes de contrôle et de données sont fixes, et
// une déclaration plus simple peut éventuellement être utilisée:
// Adafruit_TFTLCD tft;

// -- Installer
//********************************************
void setup(void) {
  Serial.begin(9600);
//  progmemPrintln(PSTR("TFT LCD test"));
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
 // progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Arduino Shield Pinout"));
#else
//  progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Breakout Board Pinout"));
#endif
  tft.reset();

 // *** SPFD5408 change - Begin


//*******************************
 tft.begin(0x9341); // SDFP5408
  // tft.begin(0x9481);
  tft.setRotation(4); //1 paysage 2 portrait 3 paysage
  // Besoin de Mega, veuillez changer pour
  //votre choix ou rotation initiale
   // *** SPFD5408 change - Fin
//*******************************
//  progmemPrintln(PSTR("Benchmark                Time (microseconds)"));
//*******************************
 // progmemPrint(PSTR("Screen fill              "));
//  Serial.println(testFillScreen());
  delay(500);
//*******************************
 // progmemPrint(PSTR("Text                     "));
  Serial.println("test_texte");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Lines                    "));
  Serial.println("testLines(CYAN)");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Horiz/Vert Lines         "));
  Serial.println("testFastLines(RED, BLUE)");
  delay(0);
//*******************************
//  progmemPrint(PSTR("Rectangles (outline)     "));
  Serial.println("testRects(GREEN)");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Rectangles (filled)      "));
  Serial.println("testFilledRects(YELLOW, MAGENTA)");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Circles (filled)         "));
  Serial.println("testFilledCircles(10, MAGENTA)");
//*******************************
 // progmemPrint(PSTR("Circles (outline)        "));
  Serial.println("testCircles(10, WHITE)");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Triangles (outline)      "));
  Serial.println("testTriangles()");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Triangles (filled)       "));
  Serial.println("testFilledTriangles()");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Rounded rects (outline)  "));
  Serial.println("testRoundRects()");
  delay(0);
//*******************************
 // progmemPrint(PSTR("Rounded rects (filled)   "));
  Serial.println("testFilledRoundRects()");
  delay(0);
//*******************************
 // progmemPrintln(PSTR("Done!"));
}
//*******************************
void loop(void) {
  test_texte();
    delay(200);
}
//*******************************
/*
unsigned long testFillScreen() {//fonction remplissae ecran
  unsigned long start = micros();
  tft.fillScreen(BLACK);
  tft.fillScreen(RED);
  tft.fillScreen(GREEN);
  tft.fillScreen(BLUE);
  tft.fillScreen(BLACK);
  return micros() - start;
}
*/
//*******************************
void test_texte(){
//unsigned long testText() {//fonction affichage texte
  tft.fillScreen(BLACK);
 // unsigned long start = micros();
  tft.setCursor(0, 100);//x et y
  tft.setTextColor(WHITE);  tft.setTextSize(3);
  tft.println("Hello World!");

}

Modifie aussi ton message numéro 2, pour mettre le code entre balises.

D'après ton précédent message

Contrôleur ILI9340 avec tampon vidéo intégré RAM

tu devrais utiliser la bibliothèque adafruit ILI9341 (qui remplace celle du 9340 qui est obsolète) et aussi adafruit GFX

Télécharge et installe les, et essaye de faire fonctionner un exemple de la bibliothèque ILI9341.

Tic tac tic tac.....