Calcolo di una data futura o passata

Arduino:
Calcolo di una data futura o passata

Come fare:

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

RTC_DS3231 rtc;

void setup() {
  Serial.begin(9600);
  if (!rtc.begin()) {
    Serial.println("Modulo RTC non trovato!");
    while (1);
  }
  if (rtc.lostPower()) {
    Serial.println("RTC ha perso l'alimentazione, impostiamo la data e l'ora!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();
  DateTime futureDate = now + TimeSpan(30,0,0,0); // aggiunge 30 giorni alla data attuale

  // Stampa la data attuale
  Serial.print("Data attuale: ");
  stampaData(now);

  // Stampa la data futura
  Serial.print("Data futura: ");
  stampaData(futureDate);

  delay(10000); // Aspetta 10 secondi tra le stampe
}

void stampaData(DateTime date) {
  Serial.print(date.day());
  Serial.print("/");
  Serial.print(date.month());
  Serial.print("/");
  Serial.print(date.year());
  Serial.println();
}

Output:

Data attuale: 1/4/2023
Data futura: 1/5/2023

Approfondimento

Calcolare date future o passate è essenziale da quando i computer gestiscono appuntamenti e scadenze. Prima degli RTC (Real Time Clock) digitali, si usavano metodi più primitivi basati sui cicli di sistema. Opzioni alternative includono l’uso della libreria TimeLib.h o servizi esterni via internet. Si deve tenere conto di complicazioni come gli anni bisestili o i cambi di ora legati alla stagionalità, che possono essere gestiti automaticamente dalle librerie.

Vedi anche: