Освой Arduino играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

M5Stack. NTP-сервис точного времени

С помощью библиотеки NTPClient (доступен через менеджер библиотек) мы можем соединиться с NTP-сервисом точного времени и узнать время.

Данные выводятся на экран и в монитор порта, поэтому можно использовать пример и на голой ESP32, убрав лишние зависимости. В скетче я установил смещение на 3 часа, так как время берётся по Гринвичу. Возможно вам придётся изменить это значение.


#include <NTPClient.h>
#include <WiFi.h>
#include <M5Stack.h>

const char *ssid     = "YOUR_WIFI_SSID";
const char *password = "YOUR_WIFI_PASS";

const long utcOffsetInSeconds = 3 * 60 * 60; // смещение на 3 часа

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);

void setup() {
  Serial.begin(115200);
  M5.begin();
  WiFi.begin(ssid, password);
  M5.Power.begin();

  while ( WiFi.status() != WL_CONNECTED ) {
    delay (500);
    Serial.print ( "." );
  }

  timeClient.begin();
}

void loop() {
  timeClient.update();

  Serial.println(timeClient.getFormattedTime());
  M5.Lcd.setCursor(20, 90);
  M5.Lcd.setTextSize(6);
  M5.Lcd.setTextColor(TFT_YELLOW, TFT_BLACK);
  M5.Lcd.print(timeClient.getFormattedTime());
  delay(1000);
  M5.Lcd.clear();
  M5.Lcd.fillScreen(TFT_BLACK);
}

Данные обновляются раз в секунду. На самом деле не стоит так часто опрашивать сервер, узнавайте время только когда это необходимо.

NTP

Дополнительные материалы

Реклама