Programmation paludarium probleme integration void entre 2 dates

Bonjour,

Après mon premier projet qui date déjà de 2 ans, je reviens vers vous pour un problème d’intégration d’un void que j’aimerais déclencher le 21 mars et qu’il se termine le 20 juin à 00:00.

Une petite synopsis de ce que je suis entrain de faire :

J’ai recommencé un projet de paludarium il y a 4 mois et j’avais modifié mon programme pour le nouveau palu. J’avais récupéré tout le matériel de l’ancien et adapté au nouveau. Mais j’ai envie de faire plus poussé donc j’ai commandé un peu de matériel.

  • Arduino MEGA
  • DS1307
  • Ajout d’une sonde étanche DS18B20 + une sonde DHT22
  • Rajout de 40 cm de strip RGB avec un uln2803a
  • 3 canals de ventilateurs différent commuté par des buz11
  • commande des pompes et du chauffage par des relais 250V 10A

Voila pour le matériel.

Pour la partie programmation :

  • J’ai recupéré l’ancien programme et j’ai commencé à ranger
  • j’ai l’intention de reproduire les 4 saisons. J’ai créé un Void par saison ou dedans toutes les heures de démarrage et extinction du matériel est écrit ainsi que les températures souhaité.

Mais voila quand je vais dans la fonction loop je met que si on est entre le 21 mars et le 21 juin je lance le void spring, mais ça ne fonctionne pas. j’ai essayé divers code soit ça se lance et ça ne s’arrête pas ou sinon j’ai essayé juste en rentrant les mois et la le dernier jour du mois fonctionnait avec celui d’après.

Je vous remercie par avance de votre aide.

Programme_Paludarium_Ptit_Paradis_v2_6.ino (24.5 KB)

bonjour, teste ca

int jourprin =21;
int moisprin = 3;
int jourete = 21;
int moisete = 6;

..
...
...



if (day () > jourprin && month () > moisprin )
{
spring();
}
if (day () > jourete && month () > moisete ) {
summer();
}

Bonjour merci d'avoir repondu aussi rapidement.

Alors je viens d'essayer et j'ai les 2 programmes qui sont lancés en même temps sur l'ecran j'ai Ete / printemps qui clignote.

Il faudrait que je trouve le moyen de stopper le void spring à la date d'été. Mais je n'ai pas trouver de fonction LOW ou OFF pour un void.

if (day () > jourprin && month () > moisprin && month () < moisete )
{
spring();
}
if (day () > jourete && month () > moisete ) {
summer();
}

Alors la ça me lance que le programme été mème pendant la période printemps. J'ai supprimé la partie été et le programme printemps ne se lance pas.

J'essaye de faire ceci :

Si la date actuelle est supérieur au 21 mars 00:00 et est inférieur au 20 juin 00:00, je lance le Void SPRING.

Sinon rien.

Si la date actuelle est supérieur au 21 juin 00:00 et est infèrieur au 20 septembre 00:00, je lance le Void SUMMER.

Sinon rien.

ce que je ne comprend pas c'est si je le met entre 16:30 et 16:32 pour faire un essai rapidement ça marche sans soucis.

ca serait pas l'espace entre day et () idem pour month

dans ce cas, affiche dans le serial day et month pour vérifier.

je sais pas quelle version de lib rtc tu utilises, mais en principe on devrait faire un rtc.read https://github.com/PaulStoffregen/DS1307RTC/blob/master/examples/ReadTest/ReadTest.ino

Alors les espaces ne change rien apparement.

Alors j’ai bien le retour du bon mois et du bon jour. Et j’utilise les librairies Time.h et DS1307RTC.h que j’ai depuis 2 ans.

EDIT : J’ai trouvé !

 int djjanv = 1;
int janv = 1;
int djfev = 1;
int fev = 2;
int djmars = 1;
int fhiver = 20;
int djprin =  21;
int mars =  3;
int djavril = 1;
int avril = 4;
int djmai = 1;
int mai = 5;
int djjuin = 1;
int fprin = 20;
int dete = 21;
int juin = 6;
int djuillet = 1;
int juillet = 7;
int daout = 1;
int aout = 8;
int dseptembre =1;
int fete = 20;
int dautomne = 21;
int septembre = 9;
int doctobre = 1;
int octobre = 10;
int dnovembre = 1;
int novembre = 11;
int ddec=1;
int fautomne = 20;
int dhiv = 21;
int decembre = 12;

-

---

-----



if ( day() >= djjanv && month() == janv)
{
  winter();
}
else if ( day() >= djfev && month() == fev)
{
  winter();
}  
 
else if ( day() >= djmars && day() <= fhiver && month () == mars ) // entre debut juin et fin printemps
{
winter();

}  
else if (  day() >= djprin && month() == mars    ) //debut printemps
{
spring();
}

else if (  day() >= djavril && month() == avril   ) //avril
{
spring();
}
else if (  day() >= djmai && month() == mai   ) //mai
{
spring();
}

else if ( day() >= djjuin && day() <= fprin && month () == juin ) // entre debut juin et fin printemps
{
spring();
} 


else if (  day() >= dete && month() == juin   ) // depuis le 21 juin
{
summer();
}

else if ( day() >= djuillet  && month () == juillet )// juillet
{
summer();
} 


else if (  day() >= daout && month() == aout   )//aout
{
summer();
}

else if ( day() >= dseptembre && day() <= fete && month () == septembre ) // entre debut juin et fin printemps
{
summer();
} 
else if (  day() >= dautomne && month() == septembre   )//aout
{
autumn();
}
else if (  day() >= doctobre && month() == octobre   )//aout
{
autumn();
}
else if (  day() >= dnovembre && month() == novembre   )//aout
{
autumn();
} 
else if ( day() >= ddec && day() <= fautomne && month () == decembre ) // entre debut juin et fin printemps
{
autumn();
}
else if (  day() >= dhiv && month() == decembre   )//aout
{
winter();
}