Fix TFT_eSPI setTouch

This commit is contained in:
fvanroie 2022-11-15 15:04:08 +01:00
parent b449186aba
commit 0b02653a31
3 changed files with 20 additions and 16 deletions

View File

@ -76,6 +76,7 @@ class TouchLovyanGfx : public BaseTouch {
delay(500);
haspTft.tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);
set_calibration(calData);
delay(500);
}
}
};

View File

@ -4,7 +4,7 @@
#ifndef HASP_TFTESPI_TOUCH_DRIVER_H
#define HASP_TFTESPI_TOUCH_DRIVER_H
#ifdef ARDUINO
#ifdef ARDUINO&& defined(USER_SETUP_LOADED)
#include <Arduino.h>
#include "touch_driver.h" // base class
@ -35,13 +35,15 @@ class TouchTftEspi : public BaseTouch {
public:
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
#if TOUCH_DRIVER == 0x2046 && defined(TOUCH_CS)
if(haspTft.tft.getTouch((uint16_t*)&data->point.x, (uint16_t*)&data->point.y, 300)) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
data->state = LV_INDEV_STATE_PR;
hasp_set_sleep_offset(0); // Reset the offset
} else {
data->state = LV_INDEV_STATE_REL;
return;
}
#endif
data->state = LV_INDEV_STATE_REL;
/*Return `false` because we are not buffering and no more data to read*/
return false;
@ -49,11 +51,14 @@ class TouchTftEspi : public BaseTouch {
void set_calibration(uint16_t* calData)
{
#if TOUCH_DRIVER == 0x2046 && defined(TOUCH_CS)
haspTft.tft.setTouch(calData);
#endif
}
void calibrate(uint16_t* calData)
{
#if TOUCH_DRIVER == 0x2046 && defined(TOUCH_CS)
haspTft.tft.fillScreen(TFT_BLACK);
haspTft.tft.setCursor(20, 0);
haspTft.tft.setTextFont(1);
@ -66,6 +71,8 @@ class TouchTftEspi : public BaseTouch {
delay(500);
haspTft.tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);
set_calibration(calData);
delay(500);
#endif
}
};

View File

@ -177,17 +177,14 @@ IRAM_ATTR bool gui_touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* dat
void guiCalibrate(void)
{
#if TOUCH_DRIVER == 0x2046 //&& defined(USER_SETUP_LOADED)
#ifdef TOUCH_CS
haspTouch.calibrate(gui_settings.cal_data);
#endif
size_t len = sizeof(gui_settings.cal_data) / sizeof(gui_settings.cal_data[0]);
for(int i = 0; i < len; i++) {
Serial.print(gui_settings.cal_data[i]);
if(i < len - 1) Serial.print(", ");
}
// size_t len = sizeof(gui_settings.cal_data) / sizeof(gui_settings.cal_data[0]);
// for(int i = 0; i < len; i++) {
// Serial.print(gui_settings.cal_data[i]);
// if(i < len - 1) Serial.print(", ");
// }
delay(500);
lv_obj_invalidate(lv_disp_get_layer_sys(NULL));
#endif
}
@ -462,13 +459,12 @@ bool guiGetConfig(const JsonObject& settings)
changed = true;
#if TOUCH_DRIVER == 0x2046 && defined(USER_SETUP_LOADED) && defined(TOUCH_CS)
// haspTft.tft.setTouch(gui_settings.cal_data);
haspTouch.set_calibration(gui_settings.cal_data);
// haspTft.tft.setTouch(gui_settings.cal_data);
haspTouch.set_calibration(gui_settings.cal_data);
#elif TOUCH_DRIVER == 0x2046 && defined(HASP_USE_LGFX_TOUCH)
// haspTft.tft.setTouchCalibrate(gui_settings.cal_data);
haspTouch.set_calibration(gui_settings.cal_data);
// haspTft.tft.setTouchCalibrate(gui_settings.cal_data);
haspTouch.set_calibration(gui_settings.cal_data);
#endif
}
i++;
}