Problème d'affichage couleur sur écran tft

Bonjour à tous,

Totalement novice dans la programmation, j'ai un souci d'affichage sur un écran rond 1,28 de chez waveshare.

voici le code :

//#include "SPI.h"
//#include "Adafruit_GFX.h"
#include "Adafruit_GC9A01A.h"
 
#define TFT_DC 7
#define TFT_RST 8
#define TFT_BL 9
#define TFT_CS 10
#define TFT_DIN 11
#define TFT_CLK 13

/*// Color definitions
#define BLACK    0x0000
#define BLUE     0x001F
#define RED      0xF800
#define GREEN    0x07E0
#define CYAN     0x07FF
#define MAGENTA  0xF81F
#define YELLOW   0xFFA0 
#define WHITE    0xFFFF
#define GREY     0x7C92
#define DBLUE    0x008D
*/
// Hardware SPI on Feather or other boards
Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_DIN, TFT_CLK, TFT_RST, TFT_BL);

void setup() {
  Serial.begin(9600);
 
  tft.begin();

 // Effacer l'écran avec la couleur blanche
  uint16_t color = tft.color565(255, 0, 0);
  tft.fillScreen(color);
}

void loop() {
  // put your main code here, to run repeatedly:

}

mais au lieu d'avoir du rouge, j'ai du bleu comme si RVB était en fait BVR ce qui ne me semble pas logique.

Merci pour vos bon conseils

Gildas

Pourquoi tu n'utilises pas les couleurs définies plus haut (que tu as commentées)

tft.fillScreen(RED);

As-tu testé le code donne dans ce tuto (celui qui mentionne la carte feather) ?

Le GC9A01A a un registre MADCTL (adresse 0x36) dans lequel on peut définir l'organisation de la matrice.
Le bit D3 permet d'indiquer l'ordre des couleurs dans le pixel

image

Certains driver possède une méthode pour changer ce paramètre. Sinon il faut le coder.
Je ne sais pas où tu as trouvé le driver que tu utilises mais Adafruit Industries n'a pas de driver nommé Adafruit_GC9A01A dans son dépot.

Merci pour vos réponses.

Pour les couleurs commentées, le problème est le même : je veux du jaune et il m'affiche du bleu !

Quand a Adafruit_GC9A01A, je trouvé le lien sur DroneBot cité plus haut.

je crois bien que fdufnews a trouvé la solution avec le bit D3 : mais quel est le code pour pour mettre D3 = 1 qui correspond au bon ordre des couleurs RGB ?

Une idée comme ça, je ne suis pas très sûr, mais ça peut se tester.
quand on regarde le code de la bibliothèque que tu utilises on voit :

#define MADCTL_RGB 0x00 ///< Red-Green-Blue pixel order
#define MADCTL_BGR 0x08 ///< Blue-Green-Red pixel order

donc, le problème est prévu.

Plus loin, dans la fonction setRotation, on trouve uniquement référence à MADCTL_BGR comme si c'était la valeur par défaut.

Je pense que si tu édites le fichier Adafruit_GC9A01A.cpp sur ton PC (répertoire Arduino/libraries/Adafruit_GC9A01A) et que tu changes MADCTL_BGR en MADCTL_RGB dans les lignes 227 et 242, puis que tu recompiles, ça devrait fonctionner.
Il te faudra bien sûr appeler la fonction setRotation avec un argument entre 0 et 3 selon l'orientation que tu veux.

Si non, il te suffit de rechanger dans l'autre sens.
A tester...

Merci lesept : ça marche

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.