Объявление дисплея в прошивке для паяльной станции

Тема в разделе "Arduino & Shields", создана пользователем Andreas 0707, 16 май 2021.

  1. Andreas 0707

    Andreas 0707 Нерд

    Добрый день.
    Я новичок в плане работы с Ардуино, нужна помощь в переписке скетча.
    Собираю паяльную станцию по проекту Watashi, столкнулся с проблемой объявления дисплея в скетче так как у меня дисплей не такой как использовался в проекте.
    Мой дисплей 4 дюйма на микроконтроллере ST7796s но он подключается в другие пины (исходя из мануала на дисплей PIN Display.png ) на Ардуино отличные от тех что указаны в скетче.
    Сам дисплей я подключил как по мануалу и проверил на стандартных примерах что есть в даташите\мануале. также к нему идут три разных библиотеки https://drive.google.com/drive/folders/1rj5zr77CWscJqCgN3qawQJwRXjTxfZ6M?usp=sharing
    Вот как объявляется мой дисплей в стандартном примере:
    Код (C++):
    // IMPORTANT: LCDWIKI_SPI LIBRARY AND LCDWIKI_TOUCH LIBRARY MUST BE SPECIFICALLY
    // CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.

    //This program is a demo of drawing

    //when using the BREAKOUT BOARD only and using these hardware spi lines to the LCD,
    //the SDA pin and SCK pin is defined by the system and can't be modified.
    //if you don't need to control the LED pin,you can set it to 3.3V and set the pin definition to -1.
    //other pins can be defined by youself,for example
    //pin usage as follow:
    //                  CS  DC/RS  RESET  SDI/MOSI  SDO/MISO  SCK  LED    VCC     GND  
    //Arduino Mega2560  A5   A3     A4      51        50      52   A0   5V/3.3V   GND
    //                 T_IRQ  T_DO  T_DIN  T_CS  T_CLK
    //Arduino Mega2560  49     47    48     45    46

    //Remember to set the pins to suit your display module!

    /*********************************************************************************
    * @attention
    *
    * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
    * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
    * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
    * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
    * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
    * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
    **********************************************************************************/


    #include <LCDWIKI_GUI.h> //Core graphics library
    #include <LCDWIKI_SPI.h> //Hardware-specific library
    #include <LCDWIKI_TOUCH.h> //touch screen library

    //paramters define
    #define MODEL ST7796S
    #define CS   A5  
    #define CD   A3
    #define RST  A4
    #define LED  A0   //if you don't need to control the LED pin,you should set it to -1 and set it to 3.3V

    //touch screen paramters define
    #define TCS   45
    #define TCLK  46
    #define TDOUT 47
    #define TDIN  48
    #define TIRQ  49

    //the definiens of hardware spi mode as follow:
    //if the IC model is known or the modules is unreadable,you can use this constructed function
    LCDWIKI_SPI my_lcd(MODEL,CS,CD,RST,LED); //model,cs,dc,reset,led

    //the definiens of touch mode as follow:
    LCDWIKI_TOUCH my_touch(TCS,TCLK,TDOUT,TDIN,TIRQ); //tcs,tclk,tdout,tdin,tirq
    а вот как он объявлен в скетче у автора Watashi,
    Код (C++):
    // Используемые библиотеки -----------------------------
    #include <UTFT.h>

    UTFT myGLCD(CTE40, 38, 39, 40, 41);
    и еще на вкладке для тачскрина:
    Код (C++):
    // -------------------------------
    #if defined(SetTouch1) || defined(SetTouch2)   // если используется тач
      #define Set_Touch
    #endif
    // -------------------------------
    #ifdef SetTouch2
    #include <URTouch.h>
      //URTouch      myTouch(48, 50, 51, 46, 2);    // это мой дисплей для дуе
    URTouch      myTouch( 52, 53, 51, 50, 44);  // для дисплея ST7796S
        int xpok, ypok;         //screen coordinates
    #endif
    // -------------------------------
    #ifdef SetTouch1                  // Тач аналоговый
      #include <TouchScreen.h>
      uint8_t YP = A0;   // must be an analog pin, use "An" notation!
      uint8_t XM = A1;   // must be an analog pin, use "An" notation!
      uint8_t YM = A2;   // can be a digital pin
      uint8_t XP = A3;   // can be a digital pin
      uint8_t SwapXY = 0;
      #define MINPRESSURE 20
      #define MAXPRESSURE 1000
      #define SWAP(a, b) {uint16_t tmp = a; a = b; b = tmp;}
      TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
      TSPoint tp;
       
      uint16_t TS_LEFT = 900;
      uint16_t TS_RT  = 125;
      uint16_t TS_TOP = 940;
      uint16_t TS_BOT = 95;
      int xpok, ypok;         //screen coordinates
      uint8_t Orientation = 3;     //PORTRAIT

    void SetPinTouch1() {
      pinMode(XM, OUTPUT);
      pinMode(YP, OUTPUT);
      pinMode(XP, OUTPUT);
      pinMode(YM, OUTPUT);
    }
    #endif
    Может кто то-то помочь с переделкой скетча?
    PS Прошу сильно не пинать я новичок
     
  2. Watashi

    Watashi Гуру

    "LCDWIKI_SPI my_lcd(MODEL,CS,CD,RST,LED); //model,cs,dc,reset,led"
    Судя по всему у вас дисплей имеет подключение SPI т.е. последовательная, а не параллельная передача данных. И распиновка на картинке это показывает. Такой дисплей никто в данном проекте не использовал. В библиотеке UTFT есть возможность подключения по SPI, я не подключал таких дисплеев. Скорее всего нормально работать не будет((
     
  3. Andreas 0707

    Andreas 0707 Нерд

    Добрый день и спасибо за ответ.
    а скажите пожалуйста этот дисплей будет поддерживатся?
    https://www.ebay.de/itm/154022730332?hash=item23dc785a5c:g:xD8AAOSwMEFfHtAT
    и в вашем скетче он объявляется строкой
    Код (C++):
    UTFT myGLCD(CTE40, 38, 39, 40, 41);
    Спасибо
     
  4. Watashi

    Watashi Гуру

    Такой дисплей подойдет. Тонкости работы с дисплеем ТУТ.
    Только он дорогой на ебэе.