Arduino:
Tulevan tai menneen päivämäärän laskeminen
How to:
Arduino ei suoraan tue päivämääräkäsittelyä, mutta voimme käyttää kirjastoja kuten TimeLib.h
. Tässä esimerkki tulevan päivämäärän laskennasta:
#include <TimeLib.h>
void setup() {
Serial.begin(9600);
setTime(17, 30, 0, 8, 3, 2023); // Asetetaan nykyhetki (hh, mm, ss, pp, kk, vvvv)
}
void loop() {
time_t nykyhetki = now();
time_t tulevaisuus = nykyhetki + SECS_PER_DAY * 7; // Lisätään 7 päivää
Serial.print(day(tulevaisuus));
Serial.print(".");
Serial.print(month(tulevaisuus));
Serial.print(".");
Serial.println(year(tulevaisuus));
delay(30000); // Odotetaan 30 sekuntia ennen seuraavaa laskentaa
}
Deep Dive
Arduinon maailmassa ajankäsittely perustuu millis()
-funktioon, joka laskee millisekunteja laitteen käynnistyksestä. Historiallisesti mikrokontrollerit eivät ole kelloneet päivämääriä mutta lisäkirjastot, kuten TimeLib
, ovat tulleet avuksi.
Vaihtoehtoisesti RTC (Real-Time Clock) moduuleja voidaan käyttää tarkempiin aikaleimoihin ja ne säilyttävät ajan jopa virrankatkaisun aikana.
Päivämäärälaskennassa kannattaa huomioida karkausvuodet ja kuukausien eri pituudet. TimeLib
-kirjasto hoitaa nämä yksityiskohdat puolestasi.