Авто переведення часу для Arduino на C++

Сьогодні я зіткнувся з проблемою що коли переводять годинник мої Arduino пристрої починають показувати неточний час і я знайшов рішення цієї проблеми

Код

#include <NTPClient.h>
#include <WiFiUdp.h>

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ua.pool.ntp.org", 7200);

void initTime() {
  // Встановлюємо початкове значення літнього часу на false
  bool isDaylightSaving = false;

  // Отримуємо поточну дату та час з сервера NTP
  timeClient.begin();
  timeClient.update();
  String formattedTime = timeClient.getFormattedTime();

  // Розбиваємо рядок з форматованим часом на складові
  int day, month, year, hour, minute, second;
  sscanf(formattedTime.c_str(), "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);

  // Перевіряємо, чи поточний місяць знаходиться в інтервалі березень-жовтень
  if (month > 3 && month <= 10) {
    // Якщо так, встановлюємо літній час на true
    isDaylightSaving = true;
  }

  // Встановлюємо зміщення часового поясу для врахування літнього часу
  if (isDaylightSaving) {
    timeClient.setTimeOffset(14400); // UTC+3 для України
  } else {
    timeClient.setTimeOffset(10800); // UTC+2 для України
  }
}

void setup() {
  // Підключення до WiFi і налаштування часу
  ...

  initTime();
}

void loop() {
  // Оновлюємо час з сервера NTP
  timeClient.update();

  // Решта коду для програми
  ...
}

Тестовано на esp32.

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Д
Данило@S.D.L

1.3KПрочитань
2Автори
5Читачі
Підтримати
На Друкарні з 15 квітня

Більше від автора

Вам також сподобається

  • Куди спішити?

    Найважче знову почати. Ні, не так – змінюю розмір шрифту із 14 на 12, «комфортний», і продовжую писати. Про що хочу розповісти? Про втому. Десь далеко грівся очерет у пастельних відтінках залитої місяцем озерної води. Відьми літали над лісом. Сходила зима…

    Теми цього довгочиту:

    Есе
  • Чому micro:bit краще за Arduino для початкової школи

    В сучасному цифровому світі дуже важливо щоб діти вивчали основи програмування та електроніки. Погодьтесь, якщо ти розумієш, як влаштована та чи інша технологія, у тебе менше шансів потрапити в якесь незручне становище.

    Теми цього довгочиту:

    Освіта
  • Час для слів і почуттів.

    Кожне слово і кожне почуття мають свій час. Чи варто мовчати, коли на душі важливо? Часом вчасно сказані слова можуть змінити життя, але іноді мовчання – мудріше рішення.

    Теми цього довгочиту:

    Життя

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається

  • Куди спішити?

    Найважче знову почати. Ні, не так – змінюю розмір шрифту із 14 на 12, «комфортний», і продовжую писати. Про що хочу розповісти? Про втому. Десь далеко грівся очерет у пастельних відтінках залитої місяцем озерної води. Відьми літали над лісом. Сходила зима…

    Теми цього довгочиту:

    Есе
  • Чому micro:bit краще за Arduino для початкової школи

    В сучасному цифровому світі дуже важливо щоб діти вивчали основи програмування та електроніки. Погодьтесь, якщо ти розумієш, як влаштована та чи інша технологія, у тебе менше шансів потрапити в якесь незручне становище.

    Теми цього довгочиту:

    Освіта
  • Час для слів і почуттів.

    Кожне слово і кожне почуття мають свій час. Чи варто мовчати, коли на душі важливо? Часом вчасно сказані слова можуть змінити життя, але іноді мовчання – мудріше рішення.

    Теми цього довгочиту:

    Життя