Друкарня від WE.UA

Авто переведення часу для 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

2Довгочити
1.5KПерегляди
5Підписники
Підтримати
На Друкарні з 15 квітня 2023

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

Це також може зацікавити:

  • Бажання від того, що залишилось..

    Коли я замислююсь, що більшу частину життя я вже прожила... Хочеться ці роки, що залишились витратити на якість, не на кількість друзів. Безмежне бажання цінувати тих, хто поруч, говорити правду в очі. Свій не відрікнеться і не злякається правди.

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

    Життя
  • Час-структури та виробництво історії ч.1 — Бароковий час.

    Що таке час? Я не збираюся тут відповідати на питання фізики чи інших точних наук (це було б абсурдно) і розбираю час (а точніше час-структури) як концептуальне явище, і мені скоріше цікаво, як час (напевне феноменологічний) виробляє реальність (або Umwelt).

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

    Філософія
  • Сила через біль.

    Чи дійсно час зцілює? Можливо, ми просто вчимося жити з болем, перетворюючи його на силу, яка штовхає нас вперед. Цей текст про те, як через втрати ми стаємо сильнішими.

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

    Роздуми

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

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

Це також може зацікавити:

  • Бажання від того, що залишилось..

    Коли я замислююсь, що більшу частину життя я вже прожила... Хочеться ці роки, що залишились витратити на якість, не на кількість друзів. Безмежне бажання цінувати тих, хто поруч, говорити правду в очі. Свій не відрікнеться і не злякається правди.

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

    Життя
  • Час-структури та виробництво історії ч.1 — Бароковий час.

    Що таке час? Я не збираюся тут відповідати на питання фізики чи інших точних наук (це було б абсурдно) і розбираю час (а точніше час-структури) як концептуальне явище, і мені скоріше цікаво, як час (напевне феноменологічний) виробляє реальність (або Umwelt).

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

    Філософія
  • Сила через біль.

    Чи дійсно час зцілює? Можливо, ми просто вчимося жити з болем, перетворюючи його на силу, яка штовхає нас вперед. Цей текст про те, як через втрати ми стаємо сильнішими.

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

    Роздуми