Arduino:
Порівняння двох дат
How to: (Як це зробити:)
Уявимо, вам треба порівняти сьогоднішню дату з дедлайном. В Arduino можна використовувати бібліотеку TimeLib для роботи з часом.
#include <TimeLib.h> // Підключення бібліотеки Time
void setup() {
Serial.begin(9600);
// Тут ініціалізация часу
setTime(12, 34, 56, 1, 2, 2023); // 12:34:56 1 лютого 2023
}
void loop() {
time_t now = now(); // Отримання поточного часу
time_t deadline = makeTime(12, 0, 0, 15, 2, 2023); // 12:00:00 15 лютого 2023
if (now > deadline) {
Serial.println("Дедлайн пропущено!");
} else if (now < deadline) {
Serial.println("Є ще час до дедлайну.");
} else {
Serial.println("Сьогодні дедлайн!");
}
delay(1000); // Чекаемо 1 секунду
}
Deep Dive (Поглиблене занурення)
Порівняння дат у мікроконтролерів, як Arduino, багато в чому залежить від часового хардвару і настроювання. TimeLib є однією з доступних бібліотек, але є й інші, як RTClib для реального часу.
В історичному контексті, стеження за часом було складно без вбудованих годинників. Arduino Uno і такі подібні плати не мають RTC (Real Time Clock), тому треба або записувати час при завантаженні скетчу, або використовувати зовнішні модулі RTC.
Щодо реалізації, time_t
це базовий тип даних у TimeLib, що представляє час у секундах з певної епохи (зазвичай 1 січня 1970). Функція makeTime
конвертує зручні формати (година, дата, місяць, рік) у time_t
. Сравнення потім робиться за допомогою стандартних операторів (<
, >
, ==
).