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

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

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

  • Arduino уроки для початківців: Урок 1. Вступний урок. Що ж таке Arduino?

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

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

    Arduino
  • Сила через біль.

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

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

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

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

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

    Освіта

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

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

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

  • Arduino уроки для початківців: Урок 1. Вступний урок. Що ж таке Arduino?

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

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

    Arduino
  • Сила через біль.

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

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

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

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

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

    Освіта