[Résolu] Gestion du temps

Bonsoir,
voilà je patauge avec la gestion du temps/date sur arduino
j'ai bien compris que le temps est décompté depuis le 1/1/70 (sans le 1900??) stocké dans une variable genre Nom_ RTC "type double"

y a t-il un tuto ou des infos pour manipuler le temps/dates ,

mon but : prendre une date sous forme de variable "Nom_ RTC" et lui rajouter/retirer des secondes /minutes/heures/jours/mois
de pouvoir faire une comparaison pour déclancher une action

je n'arrive a rien

merci de votre aide

J'utilise RTClib
Cette bibliothèque possède 2 classes DateTime et TimeSpan qui savent faire tous les calculs possibles et imaginables (ou presque)

Oui +1 sur RTCLib et ses classes de gestion du temps

Ne pas acheter une DS1307 qui dérive rapidement, prendre une DS3231 par exemple

de pouvoir faire une comparaison pour déclancher une action

La classe DateTime de la RTClib comporte tous les opérateurs de comparaison <, <=, >, >=, == :

#include <RTClib.h>

RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

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

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

unsigned long lastSec;

void loop()
{
  DateTime dt(20, 3, 9, 11, 20, 30);
  DateTime now = rtc.now();

  if (lastSec != now.second()) {
    lastSec = now.second();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.println(now.second(), DEC);
    if (now == dt) {
      Serial.println("ACTION !!!");
    }
  }
}

Ce code déclenche une action à l'heure dt.

Merci!!

j'ai intégré RTClib et adapté le code de hbachetti et ca marche!!

le petit sketch de test dans mon projet..

void test_ouverture()
{
   DateTime now = rtc.now();
  DateTime dt_lever(now.year(), now.month(), now.day(), Heure_lever.heure, Heure_lever.minutes, 10); // point de reference pour l'heure de lever solaire
  DateTime dt_coucher(now.year(), now.month(), now.day(), Heure_coucher.heure, Heure_coucher.minutes, 10);// point de reference pour l'heure de coucher solaire
  lcd.clear();
   lcd.setCursor(0, 0);
  lcd.print("heure: ");
  lcd.print(now.hour());
   lcd.print(" : ");
  lcd.print(now.minute());
   lcd.print(" : ");
  lcd.print(now.second());
   lcd.setCursor(0,1 );
  lcd.print("lever   : ");
   lcd.print(Heure_lever. heure);
  lcd.print(" : ");
  lcd.print(Heure_lever. minutes);
   lcd.setCursor(0,2 );
  lcd.print("coucher :");
  lcd.print(Heure_coucher. heure);
  lcd.print(" : ");
  lcd.print(Heure_coucher. minutes);
        if ((now >= dt_lever)&&(now <= dt_coucher)) // heure > heure lever solaire et < heure de coucher 
        {
      Serial.println("ACTION lever !!!");
         lcd.setCursor(0,3 );
        lcd.print("ACTION lever !!!");
    }
    else 
    {
          Serial.println("ACTION Fermer !!!");
         lcd.setCursor(0,3 );
        lcd.print("ACTION Fermer !!!");
    } 
}

Merci A vous!