Excusez moi, j'ai été un peu vite pour créer le sujet.
Voici mon code. Je suis novice, soyez indulgents !
//***** Portier double poulailler *****//
//Bibliothèques inclues:
#include <Dusk2Dawn.h>
#include <EEPROM.h>
#include <Wire.h>
#include <math.h>
#include <RTClib.h>
// Définition moteurs:
int in1Poulailler = 9; //fil noir
int in2Poulailler = 10; //fil blanc
int in3Enclos = 11; //fil gris
int in4Enclos = 12; //fil violet
// Définition capteurs:
int downSensorClose1 = 5; //fil jaune
int upSensorOpen2 = 6; //fil vert
int downSensorClose3 = 7; //fil jaune
int upSensorOpen4 = 8; //fil vert
// Définition interrupteurs:
//int switch1Open = 3; //fil blanc
//int switch1Close = 4; //fil bleu
//int switch2Open = 1; //fil jaune
//int switch2Close = 0; //fil vert
// Définition module heure temps réel:
RTC_DS3231 rtc;
//Locatlisation GPS et fuseau horaire pour la bibliothèque dusk2dawn
Dusk2Dawn Lieux(lat, long, +1);
// Déclarations variables:
DateTime now;
int sunrise;
int sunset;
int currentTime;
// MàJ du module RTC à chaque nouvelle connexion.
// à mettre sur "false" après avoir téléversé sur "true" pour éviter une maj suite à une coupure de courant.
// Déclaration d'une constante
const bool debug = true;
void setup() {
Serial.begin(9600);
pinMode(in1Poulailler, OUTPUT);
pinMode(in2Poulailler, OUTPUT);
pinMode(in3Enclos, OUTPUT);
pinMode(in4Enclos, OUTPUT);
pinMode(downSensorClose1, INPUT);
pinMode(upSensorOpen2, INPUT);
pinMode(downSensorClose3, INPUT);
pinMode(upSensorOpen4, INPUT);
// pinMode(switch1Open, INPUT);
// pinMode(switch1Close, INPUT);
// pinMode(switch2Open, INPUT);
// pinMode(switch2Close, INPUT);
rtc.begin();
if (debug){
Serial.println("Démarrage. Vérification et ajustement du RTC");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
else if (!debug){
Serial.println("Démarrage. Vérification mais pas d'ajustement du RTC");
}
}
void loop() {
delay(1000);
now = rtc.now();
sunrise = Lieux.sunrise(now.year(), now.month(), now.day(), true);
sunset = Lieux.sunset(now.year(), now.month(), now.day(), true);
currentTime = ((now.hour()) * 60) + (now.minute());
afficheHeure(now);
// afficheSunsetSunriseCurrentTime(now);
// controlSensor();
if (currentTime >= sunrise - 10 && currentTime <= sunset + 30 && digitalRead(upSensorOpen2) == 0){
openDoorPoulailler();
}
else if (currentTime < sunrise - 10 || currentTime > sunset + 30 && digitalRead(downSensorClose1) == 0){
closeDoorPoulailler();
}
if (currentTime >= sunrise && currentTime <= sunset + 20 && digitalRead(upSensorOpen4) == 0){
openDoorEnclos();
}
else if (currentTime < sunrise || currentTime > sunset + 20 && digitalRead(downSensorClose3) == 0){
closeDoorEnclos();
}
}
void doorPoulaillerOpen(){
digitalWrite(in1Poulailler, 0);
digitalWrite(in2Poulailler, 1);
}
void doorEnclosOpen(){
digitalWrite(in3Enclos, 0);
digitalWrite(in4Enclos, 1);
}
void doorPoulaillerClose(){
digitalWrite(in1Poulailler, 1);
digitalWrite(in2Poulailler, 0);
}
void doorEnclosClose(){
digitalWrite(in3Enclos, 1);
digitalWrite(in4Enclos, 0);
}
void doorPoulaillerStop(){
digitalWrite(in1Poulailler, 0);
digitalWrite(in2Poulailler, 0);
}
void doorEnclosStop(){
digitalWrite(in3Enclos, 0);
digitalWrite(in4Enclos, 0);
}
void afficheHeure(DateTime now){
Serial.print("Date: ");
Serial.print(now.day());
Serial.print('/');
Serial.print(now.month());
Serial.print('/');
Serial.print(now.year());
Serial.print(" | Heure: ");
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.print(now.second());
Serial.println();
}
void afficheSunsetSunriseCurrentTime(DateTime now){
Serial.print("Sunrise: ");
Serial.print(sunrise);
Serial.print(" - Sunset: ");
Serial.print(sunset);
Serial.print(" - currentTime: ");
Serial.print(currentTime);
Serial.println();
}
void controlSensor(){
Serial.print("Poulailler haut/bas: ");
Serial.print(digitalRead(upSensorOpen2));
Serial.print('/');
Serial.print(digitalRead(downSensorClose1));
Serial.print(" | Enclos haut/bas): ");
Serial.print(digitalRead(upSensorOpen4));
Serial.print('/');
Serial.print(digitalRead(downSensorClose3));
Serial.println();
}
void openDoorPoulailler(){
Serial.println("La porte du poulailler s'ouvre");
while (digitalRead(upSensorOpen2) == 0){
doorPoulaillerOpen();
}
Serial.println("La porte du poulailler est ouverte, elle s'arrête");
doorPoulaillerStop();
}
void closeDoorPoulailler(){
Serial.println("La porte du poulailler se ferme");
while (digitalRead(downSensorClose1) == 0){
doorPoulaillerClose();
}
Serial.println("La porte du poulailler est fermée, elle s'arrête");
delay(500);
doorPoulaillerStop();
}
void openDoorEnclos(){
Serial.println("La porte de l'enclos s'ouvre");
while (digitalRead(upSensorOpen4) == 0){
doorEnclosOpen();
}
Serial.println("La porte de l'enclos est ouverte, elle s'arrête");
delay(1000);
doorEnclosStop();
}
void closeDoorEnclos(){
Serial.println("La porte de l'enclos se ferme");
while (digitalRead(downSensorClose3) == 0){
doorEnclosClose();
}
Serial.println("La porte de l'enclos est fermée, elle s'arrête");
delay(500);
doorEnclosStop();
}
J'ai également commencé à écrire les fonctions pour l'affichage sur le lcd. J'ignore si ça marchera 