Probleme affichage sur LCD 2.8'

Bonsoir à tous
Petite présentation avant de prétendre demander la charité.
Je me présente donc : Ludovic, 40 ans et je replonge dans la bidouille en mettant un doigt dans l'Arduino. Me débrouillant un peu dans le code et étant (en général) autodidacte, sur ce coup, j'avoue que je bloque depuis un petit moment

le but du programme était de me familiariser avec l'écran 2.8' tactile de chez Velleman: le VMA412, connecté à une carte mega.

Donc pour faire simple, lorsque je touche une couleur du drapeau Français, la couleur doit s'afficher dans la console ( c'est OK) et sur l'écran sous le drapeau (là, ce n'est pas ok).

tout fonctionne excepté l'affichage de la couleur sous forme de texte.

Place aux experts ;

#include <MCUFRIEND_kbv.h>
#include <stdint.h>
#include "TouchScreen.h"

#define YP A3  
#define XM A2  
#define YM 9   
#define XP 8  

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

#define MINPRESSURE 10
#define MAXPRESSURE 1000

#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940

MCUFRIEND_kbv tft;


#define BOXSIZE 107
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);


void setup(void) {
  tft.reset();
  Serial.begin(9600);
  uint16_t identifier = tft.readID();
  
  tft.begin(identifier);
  tft.setRotation(1);

  tft.fillScreen(WHITE);

  tft.fillRect(0, 0, BOXSIZE, 180, BLUE);
  tft.fillRect(BOXSIZE, 0, BOXSIZE, 180, WHITE);
  tft.fillRect(BOXSIZE*2, 0, BOXSIZE, 180, RED);


}

void loop()
{
  digitalWrite(13, HIGH);
  TSPoint p = ts.getPoint();
  digitalWrite(13, LOW);

  p.x = map(p.x, TS_MINX, TS_MAXX, 0, 240);
  p.y = map(p.y, TS_MINY, TS_MAXY, 0, 320);
   if (p.z > MINPRESSURE && p.z < MAXPRESSURE && p.x < 180) 
   {
    Serial.print("X = "); Serial.print(p.x);
    Serial.print("\tY = "); Serial.print(p.y);
    Serial.print("\tPressure = "); Serial.println(p.z);
      if (p.y < BOXSIZE) { 
        Serial.print("Bleu");
        tft.setCursor(105, 230);
        tft.setTextColor(BLACK); 
        tft.setTextSize(4);
        tft.print("Bleu");
        delay (100);
        tft.fillRect(180, 0, 320, 240, WHITE);
      } 
      else if (p.y < BOXSIZE*2) {
         Serial.print("Blanc");
         tft.setCursor(105, 230);
         tft.setTextColor(BLACK); 
         tft.setTextSize(4);
         tft.print("Blanc");
         delay (100);
         tft.fillRect(180, 0, 320, 240, WHITE);
        } 
       else if (p.y < BOXSIZE*3) {
         Serial.print("Rouge");
         tft.setCursor(105, 230);
         tft.setTextColor(BLACK); 
         tft.setTextSize(4);
         tft.print("Rouge");
         delay (100);
         tft.fillRect(180, 0, 320, 240, WHITE);
       }
 }
}

merci pour le partage de vos connaissances
Ludovic

J'ai l'impression qu'il manque #include "Adafruit_GFX.h" au début de ton code.

Merci pour ta reponse Lesep.
Mais non, ce n'est pas du à cette librairie manquante

Au fait, j'ai effacé un "}" par mégarde en collant mon sketch. Mais ce n'est pas non plus la cause de mon problème

voici le sketch tel que je le téléverse sur mon arduino. Sans faute mais toujours sans le resultat escompté.

#include <MCUFRIEND_kbv.h>
#include <stdint.h>
#include "TouchScreen.h"
#include "Adafruit_GFX.h"

// définition des entrées sortie du LCD

#define YP A3  
#define XM A2  
#define YM 9   
#define XP 8  

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4


// définition des couleurs basiques
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF


// définition des limites de pression p.z
#define MINPRESSURE 10
#define MAXPRESSURE 1000


// Définition des limites de coordonnées de l'écran en lecture
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940


// nomme l'objet tft
MCUFRIEND_kbv tft;


// définition de la largeur de chaque bande du drapeau
#define BOXSIZE 107

// définition du tactile
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);


void setup(void) {
  tft.reset();
  Serial.begin(9600);
  uint16_t identifier = tft.readID();
  
  tft.begin(identifier);
  tft.setRotation(1);


// écran blanc
  tft.fillScreen(WHITE);


// je dessine le drapeau
  tft.fillRect(0, 0, BOXSIZE, 180, BLUE);
  tft.fillRect(BOXSIZE, 0, BOXSIZE, 180, WHITE);
  tft.fillRect(BOXSIZE*2, 0, BOXSIZE, 180, RED);
}
void loop() {

// lecture du tactile
  digitalWrite(13, HIGH);
  TSPoint p = ts.getPoint();
  digitalWrite(13, LOW);

// conversion des coordonnées de lecture du tactile
  p.x = map(p.x, TS_MINX, TS_MAXX, 0, 240);
  p.y = map(p.y, TS_MINY, TS_MAXY, 0, 320);

// si la pression est suffisante, pas trop forte et dans le drapeau
   if (p.z > MINPRESSURE && p.z < MAXPRESSURE && p.x < 180) 
   {

// si la pression est dans la zone bleue
      if (p.y < BOXSIZE) { 
        Serial.print("Bleu");
        tft.setCursor(105, 230);
        tft.setTextColor(BLACK); 
        tft.setTextSize(4);
        tft.print("Bleu"); // j'écris bleu
        delay (100);
        tft.fillRect(180, 0, 320, 240, WHITE); // je crée un rectangle blanc pour effacer le texte
      } 
// si la pression est dans le blanc du drapeau
      else if (p.y < BOXSIZE*2) {
         Serial.print("Blanc");
         tft.setCursor(105, 230);
         tft.setTextColor(BLACK); 
         tft.setTextSize(4);
         tft.print("Blanc");
         delay (100);
         tft.fillRect(180, 0, 320, 240, WHITE);
        } 
// si la pression est dans le rouge du drapeau
       else if (p.y < BOXSIZE*3) {
         Serial.print("Rouge");
         tft.setCursor(105, 230);
         tft.setTextColor(BLACK); 
         tft.setTextSize(4);
         tft.print("Rouge");
         delay (100);
         tft.fillRect(180, 0, 320, 240, WHITE);
       }
 }
}

Pour ceux que cela intéresse, le sketch tourne.
L'erreur à l'oubli de la fontion pinMode.

#include <MCUFRIEND_kbv.h>
#include <stdint.h>
#include "TouchScreen.h"


// définition des entrées sortie du LCD

#define YP A3  
#define XM A2  
#define YM 9   
#define XP 8  

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4


// définition des couleurs basiques
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF


// définition des limites de pression p.z
#define MINPRESSURE 10
#define MAXPRESSURE 1000


// Définition des limites de coordonnées de l'écran en lecture
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940


// nomme l'objet tft
MCUFRIEND_kbv tft;


// définition de la largeur de chaque bande du drapeau
#define BOXSIZE 107

// définition du tactile
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);


void setup(void) {
  tft.reset();
  Serial.begin(9600);
  uint16_t identifier = tft.readID();
  
  tft.begin(identifier);
  tft.setRotation(1);

// écran blanc
  tft.fillScreen(WHITE);


// je dessine le drapeau
  tft.fillRect(0, 0, BOXSIZE, 180, BLUE);
  tft.fillRect(BOXSIZE, 0, BOXSIZE, 180, WHITE);
  tft.fillRect(BOXSIZE*2, 0, BOXSIZE, 180, RED);

}
void loop() {

// lecture du tactile
  digitalWrite(13, HIGH);
  TSPoint p = ts.getPoint();
  digitalWrite(13, LOW);


  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);




// conversion des coordonnées de lecture du tactile
  p.x = map(p.x, TS_MINX, TS_MAXX, 0, 240);
  p.y = map(p.y, TS_MINY, TS_MAXY, 0, 320);

// si la pression est suffisante, pas trop forte et dans le drapeau
   if (p.z > MINPRESSURE && p.z < MAXPRESSURE && p.x < 180) 
   {

// si la pression est dans la zone bleue
      if (p.y < BOXSIZE) { 
        Serial.print("Bleu");
        tft.setCursor(105, 200);
        tft.setTextColor(BLACK); 
        tft.setTextSize(4);
        tft.print("Bleu"); // j'écris bleu
        delay (100);
        tft.fillRect(0, 180, 320, 240, WHITE); // je crée un rectangle blanc pour effacer le texte
      } 
// si la pression est dans le blanc du drapeau
      else if (p.y < BOXSIZE*2) {
         Serial.print("Blanc");
         tft.setCursor(105, 200);
         tft.setTextColor(BLACK); 
         tft.setTextSize(4);
         tft.print("Blanc");
         delay(100);
         tft.fillRect(0, 180, 320, 240, WHITE);
        } 
// si la pression est dans le rouge du drapeau
       else if (p.y < BOXSIZE*3) {
         Serial.print("Rouge");
         tft.setCursor(105, 200);
         tft.setTextColor(BLACK); 
         tft.setTextSize(4);
         tft.print("Rouge");
         delay (100);
         tft.fillRect(0, 180, 320, 240, WHITE);
       }
 }
}

Un modo peut donc clôturer le sujet .Merci à vous