Traitement sur des heures et dates

Bonjour à vous,

Etant actuellement en train de fabriquer un petit projet de gestion d’éclairage, je me heurte à un problème…
En effet, j’aimerai afficher lors de l’appui sur un bouton:

  • Le temps restant avant extinction
  • Ou le temps restant avant allumage

Malheureusement, je ne sais comment m’y prendre pour “pointer” sur la fin de l’éclairage en cours ou le début du prochain afin d’effectuer mon calcul par rapport à l’instant T.

Merci de vos lumières !

Je vous laisse les parties du code concernant l"éclairage.

int time_light_on=1859;  // Heure d'allumage des lampes  EX: 22h17 donnerait 2217
int time_light_off=1300; // Heure d'extinction des lampes

minutes=now.minute();
  temps_perso=((now.hour()*100)+minutes);
  
  if(time_light_on < time_light_off){
    if(temps_perso > time_light_on && temps_perso < time_light_off){
      digitalWrite(RELAY1,LOW);
    }
    else{
      digitalWrite(RELAY1, HIGH);
    }
  }
  else{
    if(temps_perso > time_light_on || temps_perso < time_light_off){
      digitalWrite(RELAY1,LOW);
    }
    else{
      digitalWrite(RELAY1, HIGH);
    }	
  }

Si il manque des informations, excusez moi :slight_smile:

La manière dont tu stockes les horaires dans un int ne convient pas pour les calculs

Stocke plutôt le nombre de minutes écoulées depuis minuit

  temps_perso=((now.hour()*100)+minutes);

ça c'est une bonne approche pour avoir un nombre qui s'affiche simplement pour lire l'heure ou faire une comparaison avec un moment fixe de la journée facile à écrire dans le programme sans calculs: 17h30 étant représenté par 1730 [u]mais[/u] ce n'est pas une bonne approche pour faire des maths simplement pour calculer un intervalle.

si t[sub]1[/sub] = 100 x h[sub]1[/sub] + m[sub]1[/sub] et t[sub]2[/sub] = 100 x h[sub]2[/sub] + m[sub]2[/sub] alors t3 = t2-t1 est un objet mathématique pas sympa pour extraire le nombre d'heures et de minutes de l'intervalle de temps.

  temps_perso=((now.hour()*60)+minutes); dans ce cas est plus approprié. quand vous allez soustraire une valeur en minutes à une autre valeur en minutes, vous obtiendrez donc un nombre N de minutes

N / 60 sera le nombre d'heures (si vous mettez cela dans un int) N % 60 sera le nombre de minutes restantes.

(assurez vous de traiter des nombres positifs le modulo est valable sur des nombres positifs )