Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème affichage écran 2.8 TFT

    7 mars 2021 à 1:16:57

    Bonsoir j'ai un problème avec mon écran  2.8 tft qui n'afficher rien , j'ai bien mis les librairies associer MCUFRIEND_kvb .

    je voudrais afficher deux boutons of et offf et une playlist sur un menu pour de la music  , comment  je peux procéder.

    #include <Adafruit_GFX.h>
    #include <Adafruit_GrayOLED.h>
    #include <Adafruit_SPITFT.h>
    #include <Adafruit_SPITFT_Macros.h>
    #include <gfxfont.h>
    
    #include <TouchScreen.h>
    
    #include <FreeDefaultFonts.h>
    #include <MCUFRIEND_kbv.h>
    #include <TFT_HX8357GLUE.h>
    #include <UTFTGLUE.h>
    
    #include <FreeDefaultFonts.h>
    #include <MCUFRIEND_kbv.h>
    #include <TFT_HX8357GLUE.h>
    #include <UTFTGLUE.h>
    
    #include <RTCZero.h>
    
    #include <FreeDefaultFonts.h>
    #include <FreeSevenSegNumFontPlusPlus.h>
    #include <MCUFRIEND_kbv.h>
    #include <TFT_PRINTGLUE.h>
    #include <UTFTGLUE.h>
    
    #include <FreeDefaultFonts.h>
    #include <FreeSevenSegNumFontPlusPlus.h>
    #include <MCUFRIEND_kbv.h>
    #include <TFT_PRINTGLUE.h>
    #include <UTFTGLUE.h>
    
    #include <FreeDefaultFonts.h>
    #include <FreeSevenSegNumFontPlusPlus.h>
    #include <MCUFRIEND_kbv.h>
    #include <TFT_PRINTGLUE.h>
    #include <UTFTGLUE.h>
    
    #include <FreeDefaultFonts.h>
    #include <FreeSevenSegNumFontPlusPlus.h>
    #include <MCUFRIEND_kbv.h>
    #include <TFT_PRINTGLUE.h>
    #include <UTFTGLUE.h>
    
    //Libraries
    #include <SD.h>//https://www.arduino.cc/en/reference/SD
    #include <Adafruit_GFX.h>//https://github.com/adafruit/Adafruit-GFX-Library
    #include <MCUFRIEND_kbv.h>//https://github.com/prenticedavid/MCUFRIEND_kbv
    #include <TouchScreen.h> //https://github.com/adafruit/Adafruit_TouchScreen
    //Constants
    #define SD_CS 10
    #define BLACK 0
    #define GREY 21845
    #define BLUE 31
    #define RED 63488
    #define GREEN 2016
    #define DARKGREEN 1472
    #define CYAN 2047
    #define MAGENTA 63519
    #define YELLOW 65504
    #define GOLD 56768
    #define WHITE 65535
    //Touch screen configuration
    #define MINPRESSURE 200
    #define MAXPRESSURE 1000
    // ALL Touch panels and wiring is DIFFERENT
    // copy-paste results from TouchScreen_Calibr_native.ino
    //3.5 Parameters
    const int XP = 8, XM = A2, YP = A3, YM = 9; //320x480 ID=0x9486
    const int TS_LEFT = 144, TS_RT = 887, TS_TOP = 936, TS_BOT = 87;
    //2.8 Parameters
    //const int XP = 8, XM = A2, YP = A3, YM = 9; //240x320 ID=0x9341
    //const int TS_LEFT = 907, TS_RT = 120, TS_TOP = 74, TS_BOT = 913;
    TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
    TSPoint p;
    bool down;
    int pixel_x, pixel_y;     //Touch_getXY() updates global vars
    //Variables
    int currentPage  = 0, oldPage = -1;
    //Objects
    MCUFRIEND_kbv tft;
    // Button calibration
    Adafruit_GFX_Button page1_btn, page2_btn;
    int margin = 5;
    int btnWidth = 100;
    int btnHeight = 40;
    int btnY = 200;
    void setup() {
     //Init Serial USB
     Serial.begin(9600);
     Serial.println(F("Initialize System"));
     //Init tft screen
     uint16_t ID = tft.readID();
     if (ID == 0xD3D3) ID = 0x9486;  //for 3.5" TFT LCD Shield , 0x9341 for 2.8" TFT LCD Shield  
     tft.begin(ID);
     tft.setRotation(1);//0-PORTRAIT 1-PAYSAGE 2-REVERSE PORTRAIT 3-REVERSE PAYSAGE
     //Uncomment if you are using SD
     /*if (!SD.begin(SD_CS)) {
        Serial.println(F("initialization failed!"));
        return;
      }*/
     currentPage = 0; // Indicates that we are at Home Screen
    }
    void loop() {
     down = Touch_getXY();
     switch (currentPage) {
       case 0:
         if (currentPage != oldPage) {
           Serial.println(F("Page 1"));
           drawPage1();
         }
         page2_btn.press(down && page2_btn.contains(pixel_x, pixel_y));
         //if (page2_btn.justReleased()) page2_btn.drawButton();
         if (page2_btn.justPressed()) {
           currentPage = 1;
         }
         break;
       case 1:
         if (currentPage != oldPage) {
           Serial.println(F("Page 2"));
           drawPage2();
         }
         page1_btn.press(down && page1_btn.contains(pixel_x, pixel_y));
         //if (page1_btn.justReleased()) page1_btn.drawButton();
         if (page1_btn.justPressed()) {
           currentPage = 0;
         }
         break;
     }
    }
    void drawPage1() { /* function drawHomePage */
     tft.setRotation(1);
     tft.fillScreen(BLACK);
     //Title
     tft.setCursor(0, 10);
     tft.setTextSize(3);
     tft.setTextColor(WHITE, BLACK);
     tft.print("This is page 1"); // Prints the string on the screen
     tft.drawLine(0, 32, 319, 32, DARKGREEN); // Draws the red line
     //text
     tft.setTextSize(3);
     tft.setTextColor(RED, BLACK);
     tft.setCursor(tft.width() / 2. -  14 * 3 * 3, 80);
     tft.print(" Go to page 2 ");
     //Button
     page2_btn.initButton(&tft, tft.width() / 2., 200, 2 * btnWidth, btnHeight, WHITE, GREEN, BLACK, "Page 2", 2);
     page2_btn.drawButton(false);
     oldPage = currentPage;
    }
    void drawPage2() { /* function drawHomePage */
     tft.setRotation(1);
     tft.fillScreen(GREY);
     //Title
     tft.setCursor(0, 10);
     tft.setTextSize(3);
     tft.setTextColor(WHITE, GREY);
     tft.print("This is page 2"); // Prints the string on the screen
     tft.drawLine(0, 32, 319, 32, DARKGREEN); // Draws the red line
     //text
     tft.setTextSize(3);
     tft.setTextColor(GREEN, BLACK);
     tft.setCursor(tft.width() / 2. - 14 * 3 * 3, 80);
     tft.print(" Go to page 1 ");
     //Button
     page1_btn.initButton(&tft, tft.width() / 2., 200, 2 * btnWidth, btnHeight, WHITE, RED, BLACK, "Page 1", 2);
     page1_btn.drawButton(false);
     oldPage = currentPage;
    }
    /************************************************************************************
        UTILITY FUNCTION
    *************************************************************************************/
    bool Touch_getXY(void)
    {
     p = ts.getPoint();
     pinMode(YP, OUTPUT);      //restore shared pins
     pinMode(XM, OUTPUT);
     digitalWrite(YP, HIGH);
     digitalWrite(XM, HIGH);
     bool pressed = (p.z > MINPRESSURE && p.z < MAXPRESSURE);
     if (pressed) {
       if (tft.width() <= tft.height()) { //Portrait
         pixel_x = map(p.x, TS_LEFT, TS_RT, 0, tft.width()); //.kbv makes sense to me
         pixel_y = map(p.y, TS_TOP, TS_BOT, 0, tft.height());
       } else {
         pixel_x = map(p.y, TS_TOP, TS_BOT, 0, tft.width());
         pixel_y = map(p.x, TS_RT, TS_LEFT, 0, tft.height());
       }
     }
     return pressed;
    }

    ce mon code pris sur internet ou il doit afficher deux menus . 

    • Partager sur Facebook
    • Partager sur Twitter
      10 mars 2021 à 14:11:53

      Tu pourrais déjà essayer de remplacer la valeur indiquée ligne 94, pour un écran 2.8 pouces:

      if (ID == 0xD3D3) ID = 0x9486;  //for 3.5" TFT LCD Shield , 0x9341 for 2.8" TFT LCD Shield 

      c'est à dire remplacer  "ID = 0x9486;" par "ID = 0x9341;".

      Ce n'est pas sûr que ça fonctionne, il semble qu'il y ait beaucoup de modèle d'écran en 2.8" avec des contrôleurs différents (SSD1289, ST7789...).

      Tu devrais ajouter des sorties sur le port série pour voir si la bibliothèque détecte le modèle de l'écran ou rien du tout:

      uint16_t ID = tft.readID(); <- ligne 93 inchangee
      
      Serial.print("ID detectee: ");
      Serial.println(ID, HEX);
      
      if (ID == 0xD3D3) ID = 0x9341; 

      Puis, après téléversement, ouvrir le moniteur série, dans Outils -> Moniteur Série (ou l'icône loupe en haut à droite de l'écran) en vérifiant que la vitesse est bien de 9600 bauds comme dans le code.



      • Partager sur Facebook
      • Partager sur Twitter
        11 mars 2021 à 18:45:41

        bonjour merci pour votre réponse j'ai oublier de mettre le calibrage avant j'ai utiliser un exemple sur la librairie mcufriend_kvb , j'ai deux boutons on et off .  a cela je voudrais ajouter un menu playlist pour que je puisse me connecter en Bluetooth depuis mon téléphone  et voir ma playlist sur l'écran est-ce possible ?

        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2021 à 1:40:51

          Ta réponse n'est pas claire: est-ce que l'affichage fonctionne ? Ton exemple devrait afficher "This is page 1" même sans mettre les bonnes valeurs pour la calibration / l'étalonnage du touchscreen.

          doub01 a écrit:

          je voudrais ajouter un menu playlist pour que je puisse me connecter en Bluetooth depuis mon téléphone  et voir ma playlist sur l'écran est-ce possible ?

          Ca devrait être techniquement possible, avec le profil AVRCP (Audio/Video Remote Control Profile) et le mode AVRC CT (CT = Controller), mode dans lequel le périphérique bluetooth sert seulement à contrôler la source audio (pause/play/next... et affichage/gestion de la playlist). En pratique, je n'ai pas l'impression qu'il existe beaucoup d'exemples ou de documentation à ce sujet, ou même que tous les lecteurs audios android/ios exposent leur playlist sous ce profil.



          • Partager sur Facebook
          • Partager sur Twitter

          Problème affichage écran 2.8 TFT

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown