Bonjour.
Je viens vers vous avec un problème d'éclairage d'aquarium. Tout fonctionne correctement, allumage aux heures voulues,
commande des divers relais et autres rampes à leds. Mais justement, pour la gestion de l'éclairage, j'aimerai pouvoir faire une différence en fonction des jours de la semaine. J'ai essayé diverses formules avec "now.dayOfTheWeek ()" comme vous pouvez
le voir dans l'extrait de code que je joins ici :
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
int ledR = 8;
int ledV = 9;
int ledB = 10;
int ledblanc1 = 11; // led blanche
int ledblanc2 = 12; // led blanche
int ledblanc3 = 13; // led blanche
int ledblanc4 = 44; // led blanche
int ledblanc5 = 45; // led blanche
int relaisCO2 = 50; // co2 aquarium digitalWrite
int relaisnouriture = 53; // nouriture digitalWrite
int i = 255 ; //intensité lumineuse (de 0 à 255 pour le maxi)
int dayOfTheWeek = dayOfTheWeek;
void setup()
{
Wire.begin();
RTC.begin();
pinMode (ledR, OUTPUT);
pinMode (ledV, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (ledblanc1, OUTPUT);
pinMode (ledblanc2, OUTPUT);
pinMode (ledblanc3, OUTPUT);
pinMode (ledblanc4, OUTPUT);
pinMode (ledblanc5, OUTPUT);
pinMode (relaisCO2, OUTPUT);
pinMode (relaisnouriture, OUTPUT);
}
void loop()
{
// -----------------------------------------------------------------------------------------------------------------
// ALLUMAGE LEVER JOUR MATIN 9h00 SAMEDI ET DIMANCHE
// ----------------------------------------------------------------------------------------------------------------
DateTime now = RTC.now();
if ((now.dayOfTheWeek () >= 0, 6) && (now.hour() >= 9) && (now.minute() >= 0) && (now.second() >= 0) && (now.dayOfTheWeek () <= 1, 2, 3, 4, 5))
{
for (i = 0; i <= 255; i++) //
{
analogWrite (ledR, i);
analogWrite (ledV, i * 0.2);
delay (55); // 1150 cycles pour atteindre i = 255 ==> +/= 5"
}
while (i = 255) // i maximum
{
analogWrite (ledR, i);
analogWrite (ledV, i * 0.2);
// ----------------------------------------------------------------------------------------------------------------
// ALLUMAGE BLEU MATIN 9h00 LUNDI À VENDREDI
// ----------------------------------------------------------------------------------------------------------------
if ((now.dayOfTheWeek () >= 1, 2, 3, 4, 5) && (now.hour() >= 9) && (now.minute() >= 0) && (now.second() >= 0) && (now.dayOfTheWeek () <= 0, 6))
{
for (i = 0; i <= 255; i++) //
{
analogWrite (ledB, i);
delay (55); // 1150 cycles pour atteindre i = 255 ==> +/- = 5" 115 cycles pour +/- 1"
}
while (i = 255) // i maximum
{
analogWrite (ledB, i);
}
}
}
}
}
Je pense que je loupe quelque chose. L'extrait que je donne ne tient pas compte de "now.dayOfTheWeek". Les deux éclairages s'allument l'un après l'autre, dans l'ordre du code et à l'heure voulue. Idem pour l'extinction (que je n'ai pas mis ici pour ne pas alourdir le code.
La question que je me pose : pourquoi "now.dayOfTheWeek" n'est pas pris en compte ?
Je ne doute pas que l'un d'entre vous aura trouvé le "bug". Merci à vous pour votre aide