Un petit programme pour temporiser le démarrage et l'arrêt de l'extracteur des toilettes. A l'allumage (manuel) de la lumière une tempo démarre, au bout d'une minute 30 l'extracteur se met en marche puis une seconde tempo est lancée après l'extinction de la lumière pour maintenir l'extracteur en marche pendant 2 minutes.
Si on quitte les toilettes avant la fin de la première tempo, pas d'extraction.
const byte pinInterrupteur = 2; // l'interrupteur est connecté sur la broche 2 (du 5V pas du 240! j'ai utilisé une mini alim de led)
long temps1; // variable qui stocke la mesure du temps (Lumière allumée, retard extracteur)
long temps2; // variable qui stocke la mesure du temps (Lumière éteinte, maintien extracteur)
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(pinInterrupteur, INPUT); // Entrée Interrupteur (5V)
pinMode(13, OUTPUT); //LED on Model A (pin pour piloter un relais)
temps1 = millis();// on initialise le temps
temps2 = millis();// on initialise le temps
digitalWrite(13, LOW); // led éteinte
}
void loop() // the loop routine runs over and over again forever
{
if (digitalRead(pinInterrupteur) == HIGH) { // si inter ON
if ((millis() - temps1) > 90000) //1minute 30
{
digitalWrite(13, HIGH); // Allume led
temps2 = millis(); // on stocke la nouvelle heur
}
else { // sinon
digitalWrite(13, LOW); // led éteinte
}
}
else {
digitalWrite(13, LOW); // led éteinte
temps1 = millis(); // on stocke la nouvelle heure
if ((millis() - temps2) < 120000) //2 minutes
{
digitalWrite(13, HIGH); // Allume led
}
else { // sinon
digitalWrite(13, LOW); // led éteinte
}
}
}