// CODE AVEC LA FONCTION MILLIS()
const byte Relay_pin = 8; // relais
const int Verte_pin = 9; // led verte
const int Rouge_pin = 10; // led rouge
// Durées (en millisecondes)
const unsigned long ON_TIME = 3000UL; // 3 secondes
const unsigned long OFF_TIME = 3000UL; // 1 heure
// États du relais
bool relayState = false; // false = OFF, true = ON
// Temps du dernier changement d'état
unsigned long previousMillis = 0;
void setup() {
pinMode(Relay_pin, OUTPUT);
digitalWrite(Relay_pin, LOW); // Relais au repos au démarrage
relayState = false;
previousMillis = millis();
pinMode(Verte_pin, OUTPUT);
pinMode(Rouge_pin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (relayState == false) {
// Relais actuellement OFF
if (currentMillis - previousMillis >= OFF_TIME) {
relayState = true;
digitalWrite(Relay_pin, HIGH);
digitalWrite(Verte_pin, HIGH);
digitalWrite(Rouge_pin, LOW);
previousMillis = currentMillis;
}
}
else {
// Relais actuellement ON
if (currentMillis - previousMillis >= ON_TIME) {
relayState = false;
digitalWrite(Relay_pin, LOW);
digitalWrite(Verte_pin, LOW);
digitalWrite(Rouge_pin, HIGH);
previousMillis = currentMillis;
}
}
// ===================================================
// Ajoutez ici le reste de votre programme
// Lecture de capteurs
// Communication série
// Affichage LCD/OLED
// Gestion de boutons, etc.
// ===================================================
}
/*
// CODE AVEC LA FONCTION DELAY()
// Broche de commande
const int Relay_pin = 8; // relais
const int Verte_pin = 9; // led verte
const int Rouge_pin = 10; // led rouge
// Durées (en millisecondes)
const unsigned long Relay_ON_Time = 3000UL; // 3 secondes = 3000UL
const unsigned long Relay_OFF_Time = 3600000UL; // 1 heure = 3600000UL
void setup() {
pinMode(Relay_pin, OUTPUT);
pinMode(Verte_pin, OUTPUT);
pinMode(Rouge_pin, OUTPUT);
digitalWrite(Relay_pin, LOW); // Relais au repos au démarrage
}
void loop() {
// Active le relais
digitalWrite(Relay_pin, HIGH); // Relais ON
digitalWrite(Verte_pin, HIGH);
digitalWrite(Rouge_pin, LOW);
delay(Relay_ON_Time); // Delais 3 secondes
// Désactive le relais
digitalWrite(Relay_pin, LOW); // Relais OFF
digitalWrite(Verte_pin, LOW);
digitalWrite(Rouge_pin, HIGH);
delay(Relay_OFF_Time); // Delais 1 heure
}
*/Led Verte ON => Rotation moteur 3 secondes
Led Rouge ON => Arrêt moteur 1 heure
Led Jaune simule le moteur = Allumé = Moteur ON