Часы из интернета
Подключаемся к Wi-Fi и берём точное время по NTP.
У платы нет часов с батарейкой, зато она может спросить точное время у серверов NTP в интернете. Впишите имя и пароль своей сети.
#include <U8g2lib.h>
#include <Wire.h>
// Встроенный экран 0.42": контроллер SSD1306, видимая область 72×40.
// Аргументы: поворот, вывод сброса (нет), SCL = GPIO6, SDA = GPIO5.
U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, 6, 5);
#include <WiFi.h>
#include <time.h>
const char* WIFI_NAME = "ИмяСети";
const char* WIFI_PASS = "Пароль";
void setup() {
u8g2.begin();
u8g2.setFont(u8g2_font_5x8_tf);
u8g2.drawStr(0, 8, "Wi-Fi...");
u8g2.sendBuffer();
WiFi.begin(WIFI_NAME, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(300);
}
configTzTime("MSK-3", "pool.ntp.org"); // часовой пояс: Москва
}
void loop() {
struct tm t;
if (!getLocalTime(&t)) {
delay(200);
return;
}
char hm[6], sec[3], date[11];
strftime(hm, sizeof(hm), "%H:%M", &t);
strftime(sec, sizeof(sec), "%S", &t);
strftime(date, sizeof(date), "%d.%m.%Y", &t);
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_logisoso16_tn);
u8g2.drawStr(0, 20, hm);
u8g2.setFont(u8g2_font_5x8_tf);
u8g2.drawStr(60, 20, sec);
u8g2.drawStr(0, 36, date);
u8g2.sendBuffer();
delay(200);
}Плата не подключается к Wi-Fi? У маленьких плат ESP32-C3 часто слабая антенна, которая сбивается на полной мощности. Добавьте сразу после WiFi.begin(...) строку WiFi.setTxPower(WIFI_POWER_8_5dBm);
Другие часовые пояса: "EET-2" — Калининград, "SAMT-4" — Самара, "YEKT-5" — Екатеринбург, "NOVT-7" — Новосибирск.