Часы-заставка на esp32
- Войдите на сайт для отправки комментариев
Чт, 25/11/2021 - 14:54
Хочу чтобы в период бездействия часы выводились на дисплей. (будут еще кнопки как прерывание)
Скажите где я олень, ибо while не работает
#include <GyverOLED.h>
#include <WiFi.h>
#include "time.h"
GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
const char* ssid = "*********";
const char* password = "*******";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 7200;
const int daylightOffset_sec = 3600;
int clock_delay;
void setup() {
Serial.begin(115200);
oled.init(); // инициализация
oled.clear();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
}
void loop() {
oled.clear();
oled.setCursor(1, 1);
oled.setScale(3);
oled.print("hello");
oled.update();
while (millis() - clock_delay > 5000) {
struct tm timeinfo;
if (getLocalTime(&timeinfo)) {
char time_str[16];
char date_str[11];
strftime(time_str, 16, "%H:%M:%S", &timeinfo);
strftime(date_str, 11, "%m.%d.%Y", &timeinfo);
oled.clear();
oled.setCursor(15, 1);
oled.setScale(2);
oled.print(time_str);
oled.setCursor(5, 4);
oled.setScale(2);
oled.print(date_str);
oled.update();
}
clock_delay = millis();
}
}
while не работает
работает, но очень недолго.
Выводит время, показывает его крохотную долю секунды, доходит до строки 51 и выходит из цикла
Верно. И как правильно будет сделать?
51 строку надо перенести и поставить перед while , а в 35ой поменять > на <....
всем спасибо, разобрался