- Install lvgl library.
- 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 */</tft_espi.h>
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.
#define SSID "Makerfabs" #define PWD "20160704" void wifi_init() { String temp = "WiFi Connecting"; lv_label_set_text(ui_Label5,temp.c_str()); WiFi.begin(SSID, PWD); int connect_count = 0; while (WiFi.status() != WL_CONNECTED) { vTaskDelay(500); USBSerial.print("."); temp = temp + "."; lv_label_set_text(ui_Label5,temp.c_str()); connect_count++; } lv_label_set_text(ui_Label5,"WiFi Connect Over"); net_flag = 1; } if (net_flag != 1) if ((millis() - task_runtime_1) > 1000) { wifi_init(); task_runtime_1 = millis(); }
- Request webhook, process the events.
int index1; int http_flag = 0; void http_func(int index) { HTTPClient http; USBSerial.print("[HTTP] begin...\n"); String url = ""; switch (index) { case 0: url = "http://homeassistant.local:8123/api/webhook/-LYt299nHgzxcCD95yct-G2jJ"; break; case 1: url = "http://homeassistant.local:8123/api/webhook/-BhCrGgyQALW6F7b58N2PtoE7"; break; case 2: url = "http://homeassistant.local:8123/api/webhook/-uWCIeRoUjy-lzQ7vbxnFQI3i"; break; case 3: url = "http://homeassistant.local:8123/api/webhook/-0LPYwfu5Rr-1XTOGTnCDRmEU"; break; default: USBSerial.println("Input error"); return; } http.begin(url); USBSerial.print("[HTTP] GET...\n"); // start connection and send HTTP header int httpCode = http.GET(); // httpCode will be negative on error if (httpCode > 0) { // HTTP header has been send and Server response header has been handled USBSerial.printf("[HTTP] GET... code: %d\n", httpCode); // file found at server if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); USBSerial.println(payload); } } else { USBSerial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); }
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.