Beräkna ett datum i framtiden eller förflutet

Arduino:
Beräkna ett datum i framtiden eller förflutet

Hur man gör:

Med Arduino kan du inte direkt hantera datum utan hjälp från externa bibliotek. RTC (real-time clock) moduler och bibliotek som RTClib är användbara. Här är ett exempel med en RTC-modul:

#include <Wire.h>
#include <RTClib.h>

RTC_DS3231 rtc;

void setup() {
  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void adjustDate(DateTime& current, int daysToAdd) {
  current = current + TimeSpan(daysToAdd);
}

void loop() {
  DateTime now = rtc.now();
  
  // Adjusting date by 7 days
  adjustDate(now, 7);
  
  // Print new date
  Serial.print("New date: ");
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.println(now.day(), DEC);

  delay(10000); //Adjusting only every 10 seconds for this example
}

Djupdykning:

Förr hanterades datum och tid ofta av operativsystemet eller inbyggda funktioner i programmeringsspråken. Men inom inbyggda system, som Arduino, krävs ytterligare komponenter eftersom basenheten inte håller koll på tid. RTC-moduler som DS3231 använder batterier för att behålla tiden även när strömmen är av. Alternativ som TimeLib.h finns, men de kan behöva manuell synkronisering. Vid implementation får man väga precision mot resurser – RTC-moduler är noggranna men tar fysiskt utrymme och energi.

Se även: