/* M5Card Basic Dashboard - Time, Temperature, Weather */ #include <M5Cardputer.h> #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> #include <NTPClient.h> #include <WiFiUdp.h> // WiFi Credentials const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // OpenWeather API const char* apiKey = "YOUR_OPENWEATHER_API_KEY"; const char* city = "Kuala Lumpur"; String weatherURL = "http://api.openweathermap.org/data/2.5/weather?q=" + String(city) + "&appid=" + apiKey + "&units=metric"; WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, "pool.ntp.org", 28800, 60000); void setup() { M5Cardputer.begin(); M5Cardputer.Display.setTextFont(2); M5Cardputer.Display.clear(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } timeClient.begin(); } void loop() { timeClient.update(); M5Cardputer.Display.clear(); M5Cardputer.Display.setCursor(10, 20); M5Cardputer.Display.printf("Time: %s", timeClient.getFormattedTime().c_str()); if (WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin(weatherURL); int httpCode = http.GET(); if (httpCode > 0) { String payload = http.getString(); DynamicJsonDocument doc(1024); deserializeJson(doc, payload); float temp = doc["main"]["temp"]; String weather = doc["weather"][0]["description"]; M5Cardputer.Display.setCursor(10, 50); M5Cardputer.Display.printf("Temp: %.1f C", temp); M5Cardputer.Display.setCursor(10, 80); M5Cardputer.Display.printf("Weather: %s", weather.c_str()); } http.end(); } delay(10000); }