#include <WiFi.h>
#include <Ticker.h>
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold18pt7b.h>
#include <Fonts/FreeMonoBold9pt7b.h>
#include <dht.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
#define TZ_INFO "HST10"
#define NTP_SRV "pool.ntp.org"
#define GxEPD2_DRIVER_CLASS GxEPD2_290
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
#define GxEPD2_BW_IS_GxEPD2_BW true
#define MAX_DISPLAY_BUFFER_SIZE 65536ul
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
#define EPD_CS SS
#define DHT_TYPE DHT_TYPE_AM2301
#define DHT_GPIO (gpio_num_t)19
GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
Ticker tkSecond;
Ticker tkMinute;
int16_t temperature = 0;
int16_t humidity = 0;
void every_second() {
Serial.println("every second");
display.setFont(&FreeMonoBold18pt7b);
display.setTextColor(GxEPD_BLACK);
display.fillRect(0, 0, 180, 50, GxEPD_WHITE);
display.setCursor(10,40);
time_t now;
struct tm* timeinfo;
char timestr[9];
time(&now);
timeinfo = localtime(&now);
strftime(timestr, 9, "%T", timeinfo);
// display.setFullWindow();
display.fillRect(0, 0, 180, 60, GxEPD_WHITE);
display.setFont(&FreeMonoBold18pt7b);
display.setCursor(10,40);
display.print(timestr);
display.displayWindow(0,0,180,50);
}
void every_minute() {
Serial.println("every minute");
dht_read_data(DHT_TYPE, DHT_GPIO, &humidity, &temperature);
display.setFont(&FreeMonoBold9pt7b);
display.fillRect(0, 51, 180, 105, GxEPD_WHITE);
display.setCursor(0,70);
Serial.printf("Temp: %dC\n Humidity: %d%%", temperature / 10, humidity / 10);
display.printf("Temp: %dC\n Humidity: %d%%", temperature / 10, humidity / 10);
display.displayWindow(0,51,180,105);
}
void setup() {
Serial.begin(115200);
display.init(0, false, 2, false);
display.setRotation(3);
display.setTextColor(GxEPD_BLACK);
Serial.println("display init");
WiFi.begin(WIFI_SSID, WIFI_PASS);
Serial.println("Wifi");
display.clearScreen();
Serial.println("clear screen");
WiFi.waitForConnectResult();
configTzTime(TZ_INFO, NTP_SRV);
every_minute();
tkMinute.attach(3600, every_minute);
struct tm now;
getLocalTime(&now, 10000);
//display.init(0, false, 2, false);
tkSecond.attach(1, every_second);
}
void loop() {
delay(-1);
}
Loading
epaper-2in9
epaper-2in9