IT/Platform
[TFT LCD] ili9488 LVGL 재도전 #4 EEZ & LOLIN & PlatformIO
블랙오닉스
2024. 11. 3. 20:53
2024.11.03
EEZ로 생성된 UI를 적용하여 컴파일 에러를 다 잡았다.
실행하면 Serial로 좌표값은 넘어오는데, 화면이 안나온다.
녹칸다님 예제와 1:1 비교를 해서 수정
그래도 화면은 안나온다.
TFT_eSPI 관련 함수를 따라가다보니 TFT_eSPI .h 의 버전이 다르다.
git에서 받은 것은 2.5.43
화면이 나오는 버전은 2.4.61
디렉토리를 복사해서 사용하니 화면이 나온다.
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
Dependency Graph
|-- lvgl @ 8.3.6
|-- TFT_eSPI @ 2.4.61
|-- TFT_Touch @ 0.3
|-- ui
#define DOUT 34 /* Data out pin (T_DO) of touch screen */
#define DIN 32 /* Data in pin (T_DIN) of touch screen */
#define DCS 33 /* Chip select pin (T_CS) of touch screen */
#define DCLK 25 /* Clock pin (T_CLK) of touch screen */
TFT_Touch touch = TFT_Touch(DCS, DCLK, DIN, DOUT);
// TODO: Replace with your screen resolution
static const uint16_t screenWidth = 480;
static const uint16_t screenHeight = 320;
static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[ screenWidth * screenHeight / 10 ];
// TODO: Replace with your screen's touch controller
TFT_eSPI tft = TFT_eSPI(screenWidth, screenHeight);
...
void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
{
uint16_t touchX = 0, touchY = 0;
//만약 XPT2046에 터치가 감지된다면~
bool touched = touch.Pressed();//tft.getTouch( &touchX, &touchY, 600 );
if( !touched )
{
data->state = LV_INDEV_STATE_REL;
}
else
{
//XPT2046에서 인식된 x좌표와 y좌표를 LVGL에 넘겨준다
touchX = touch.X();
touchY = touch.Y();
data->state = LV_INDEV_STATE_PR;
/*Set the coordinates*/
data->point.x = touchX;
data->point.y = touchY;
Serial.print( "Data x " );
Serial.println( touchX );
Serial.print( "Data y " );
Serial.println( touchY );
}
}
...
void loop() {
lv_timer_handler();
// Update EEZ-Studio UI
ui_tick();
}
#define ILI9488_DRIVER
#define TFT_BACKLIGHT_ON HIGH
//ILI9341연결법(SPI)
//VSPI(X), HSPI(O)
#define TFT_MOSI 13 // In some display driver board, it might be written as "SDA" and so on.
#define TFT_SCLK 14
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 12
...
#define SPI_FREQUENCY 27000000
// #define SPI_FREQUENCY 40000000
// #define SPI_FREQUENCY 55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
// #define SPI_FREQUENCY 80000000
// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY 20000000
// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY 2500000
// The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
// If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
// then uncomment the following line:
#define USE_HSPI_PORT
//나머지는 모두 주석
Library 버전 차이는 나중에 다시 확인
녹칸다 예제 라이브러리와 git clone으로 받은 2.5.43이 많이 다르다
git clone으로 2.4.61도 받아 비교
git clone --branch v2.4.61 https://github.com/Bodmer/TFT_eSPI
-> copilot 방법
git clone https://github.com/Bodmer/TFT_eSPI
git checkout tags/v2.4.61 -b v2.4.61
같다
화면에 여러가지 위젯을 추가했는데 좌표가 어긋 난다.
touch.setCal(526, 3443, 750, 3377, screenWidth, screenHeight, 1);
녹칸다 예제에서 복사하고 320, 240을 화면 해상도로 변경
적당히 잘 되는데 추가한 키보드에 좌표가 약간 어긋난다.