- The MaTouch ESP32-S3 Parallel TFT with Touch 7" is not compatible with the TFT_eSPI library, so I use the GFX_Library_of_Arduino library instead of the driver.
Since I did not use the TFT_eSPI library, it is needed to delete or comment all the codes related to the TFT_eSPI library.
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI(screenWidth, screenHeight); /* TFT instance */
tft.startWrite();
tft.setAddrWindow( area->x1, area->y1, w, h );
tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );
tft.endWrite();
tft.begin(); /* TFT init */
tft.setRotation( 3 ); /* Landscape orientation, flipped */
When I use the GFX library, it is needed to define the GFX Library For the Arduino Interface pin.
Arduino_ESP32RGBPanel *bus = new Arduino_ESP32RGBPanel(
GFX_NOT_DEFINED /* CS */, GFX_NOT_DEFINED /* SCK */, GFX_NOT_DEFINED /* SDA */,
40 /* DE */, 41 /* VSYNC */, 39 /* HSYNC */, 42 /* PCLK */,
45 /* R0 */, 48 /* R1 */, 47 /* R2 */, 21 /* R3 */, 14 /* R4 */,
5 /* G0 */, 6 /* G1 */, 7 /* G2 */, 15 /* G3 */, 16 /* G4 */, 4 /* G5 */,
8 /* B0 */, 3 /* B1 */, 46 /* B2 */, 9 /* B3 */, 1 /* B4 */
);
Arduino_RPi_DPI_RGBPanel *gfx = new Arduino_RPi_DPI_RGBPanel(
bus,
SCREEN_W /* width */, 1 /* hsync_polarity */, 40 /* hsync_front_porch */, 48 /* hsync_pulse_width */, 128 /* hsync_back_porch */,
SCREEN_H /* height */, 1 /* vsync_polarity */, 13 /* vsync_front_porch */, 3 /* vsync_pulse_width */, 45 /* vsync_back_porch */,
1 /* pclk_active_neg */, 16000000 /* prefer_speed */, true /* auto_flush */);
- Modify the touchpad function according to the pre-set functions in touch.h, and pass the state of the touchpad to the LVGL graphics library.
void my_touchpad_read(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
{
if (touch_has_signal())
{
if (touch_touched())
{
data->state = LV_INDEV_STATE_PR;
/*Set the coordinates*/
data->point.x = touch_last_x;
data->point.y = touch_last_y;
}
else if (touch_released())
{
data->state = LV_INDEV_STATE_REL;
}
}
else
{
data->state = LV_INDEV_STATE_REL;
}
}
- Connecting wifi and getting NTP.
#define SSID "Makerfabs" #define PWD "20160704" // NTP const char *ntpServer = "120.25.108.11"; void wifi_init() { WiFi.begin(SSID, PWD); int connect_count = 0; while (WiFi.status() != WL_CONNECTED) { vTaskDelay(500); USBSerial.print("."); connect_count++; } USBSerial.println("Wifi connect"); configTime((const long)(8 * 3600), 0, ntpServer); net_flag = 1; }
- Adjust the angle of the hour, minute and second hands according to the acquisition time.
void display_time() { struct tm timeinfo; if (!getLocalTime(&timeinfo)) { USBSerial.println("Failed to obtain time"); return; } else { int year = timeinfo.tm_year + 1900; int month = timeinfo.tm_mon + 1; int day = timeinfo.tm_mday; int hour = timeinfo.tm_hour; int min = timeinfo.tm_min; int sec = timeinfo.tm_sec; int sec_angle = 3600 * sec / 60; int min_angle = 3600 * min / 60 + 60 * sec / 60; int hour_angle = 3600 * (hour % 12) / 12 + 300 * min / 60; lv_img_set_angle(ui_Image2, hour_angle); lv_img_set_angle(ui_Image3, min_angle); lv_img_set_angle(ui_Image4, sec_angle); lv_img_set_angle(ui_Image7, hour_angle); lv_img_set_angle(ui_Image8, min_angle); lv_img_set_angle(ui_Image9, sec_angle); } }
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.