Merci pour ta réponse fdufnews, il y a des choses que je comprends déjà mieux.
_"Pour tester une égalité il faut utiliser =="
Merci, c'est corrigé ! Lors du test de cette nuit, ça a eu l'air de fonctionner quand même. D'ailleurs, est ce que (vNuit == true) est nécessaire, n'est-ce pas plus "propre" d'avoir if (vNuit) ?
_"vNuit est défini localement dans loop() mais est appelé dans setup() cela doit générer une erreur de compilation."
En fait, je voulais que ça soit une variable globale (en vue d'autres applications), du coup je l'ai déclarée (bêtement?) dans setup(), ensuite je pensais qu'il fallait aussi la rappeler dans la fonction loop(). Pas d'erreur de compilation curieusement...
Au contraire (et c'est pourquoi je l'ai rappelée aussi dans loop() ) si je met la ligne en commentaire j'ai une série d'erreurs qui apparaissent :
Greenz_V1_0.ino: In function ‘void setup()’:
Greenz_V1_0.ino:17:11: warning: unused variable ‘vNuit’ [-Wunused-variable]
Greenz_V1_0.ino: In function ‘void loop()’:
Greenz_V1_0.ino:25:9: error: ‘vNuit’ was not declared in this scope
Greenz_V1_0.ino:31:9: error: ‘vNuit’ was not declared in this scope
Greenz_V1_0.ino:50:6: error: ‘vNuit’ was not declared in this scope
Du coup, dans l'attente de savoir comment mieux utiliser cette variable, j'ai laissé ce qui semble fonctionner...
_ "Il ne faut pas mettre un ; après le if sinon le code qui est derrière est toujours exécuté."
Coup de bol, le ; de trop était en fin de test de conditon, donc ça a bien basculé en "cycle diurne" à... 7h !
_"Tu ne seras en mode nuit que de 0h00 à 6h59."
Ça fait une heure de plus que prévu, j'ai mis ">5" du coup, ça fera bien un cycle nuit de 6h. Merci, j'ai compris que les minutes ne comptent pas dans ce test.
Voici l'état actuel du code :
//Fichier global de configuration
//Le script est écrit pour un système hydroponique.
//Il définit à terme un cycle nocturne (rupture d'éclairage + brumisation) et un cycle diurne (éclairage seul)
//Un test des réserves d'eau est prévu, avec alarme le cas échéant.
#include <Wire.h>
#include <ds3231.h>
struct ts t;
void setup() {
Serial.begin(9600);
Wire.begin();
DS3231_init(DS3231_INTCN);
boolean vNuit = false;
}
// Mise à jour de la variable nocturne;
void loop() {
boolean vNuit;
if (t.hour > 5) {
if (vNuit == true) {
vNuit = false;
// action de nuit (non implantée actuellement)
}
}
else {
if (vNuit == false) {
vNuit = true;
// action de jour (non implantée actuellement)
}
}
//Monitoring RTC
DS3231_get(&t);
Serial.print("date : ");
Serial.print(t.mday);
Serial.print("/");
Serial.print(t.mon);
Serial.print("/");
Serial.print(t.year);
Serial.print("\t Heure : ");
Serial.print(t.hour);
Serial.print(":");
Serial.print(t.min);
Serial.print(".");
Serial.println(t.sec);
if (vNuit)
Serial.println("Cycle nocturne...");
else
Serial.println("Cycle diurne...");
// Pause 1mn
delay(60000);
}