- 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
#define SSID "Makerfabs" #define PWD "20160704" 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; }
- Getting the weather information of the cities.
String city_list[CITY_COUNT] = { "Beijing", // china "Tokyo", // japan "Washington", // usa "London", // england "Paris", // france "Canberra", // Australia "Brazil", // Brazil "Berlin" // german }; void weather_request(int country_num) { HTTPClient http; USBSerial.print("[HTTP] begin...\n"); String url = "http://api.weatherapi.com/v1/current.json?key=271578bfbe12438085782536232404&q=" + city_list[country_num] + "&aqi=no"; 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); // JSON DynamicJsonDocument doc(1024); deserializeJson(doc, payload); JsonObject obj = doc.as<JsonObject>(); String city = doc["location"]["name"]; String last_update = doc["current"]["last_updated"]; String cond_txt = doc["current"]["condition"]["text"]; float tmp = doc["current"]["temp_c"]; float hum = doc["current"]["humidity"]; float pressure = doc["current"]["pressure_mb"]; float uv = doc["current"]["uv"]; String text = city + " " + cond_txt + " " + last_update; USBSerial.println(text); USBSerial.println(tmp); USBSerial.println(hum); USBSerial.println(pressure); USBSerial.println(uv); lv_label_set_text(ui_Label1, text.c_str()); char c[10]; sprintf(c, "%.1f C", tmp); lv_label_set_text(ui_LabelTemp, c); sprintf(c, "%.1f %%", hum); lv_label_set_text(ui_LabelHumi, c); sprintf(c, "%.1f kPa", pressure / 10); lv_label_set_text(ui_LabelPress, c); sprintf(c, "%.1f", uv); lv_label_set_text(ui_LabelUV, c); lv_arc_set_value(ui_ArcTemp, tmp); lv_arc_set_value(ui_ArcHumi, hum); lv_arc_set_value(ui_ArcPress, pressure); lv_arc_set_value(ui_ArcUV, uv); } } 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.