Le skecth :
int pushpin = 9; // pin arduino vers bouton
int fog_control = 11; // pin arduino vers relais
int potarpin = 1; // pin arduino analog1 vers potentiometre
long currentTime = 0; // counter
long lastfog = -86401000; // permet d’enclencher le brouillard au demarrage
long fogduration = 10000; //durée du brouillard
long interfog = 86400000; //24H entre deux brouillards
void setup() {
Serial.begin(9600);
Serial.println(“Brumisateur 1.0”);
Serial.println(“Concours arduino ouiaremakers.com 02/2016”);
pinMode(fog_control, OUTPUT);
pinMode(pushpin, INPUT);
}
void loop() {
// let’s fog at start up
currentTime = millis();
if (currentTime > lastfog + interfog ) {
lastfog = millis(); // le dernier brouillard est maintenant
fog_on(); //brouillard
}
// verifier le bouton
if (!digitalRead(pushpin)) {
Serial.println(digitalRead(pushpin));
Serial.println(!digitalRead(pushpin));
fog_on();
}
delay(500);
}
void fog_on() {
long starttime = millis(); // on enregistre l’heure de debut
digitalWrite(fog_control, HIGH); // debut du bouillard
// petite boucle de la durée demandée, on verifie le reglage de la durée pendant cette boucle
while (millis() < starttime + fogduration ) {
checkpotar(); // verification de la durée du brouillard
delay(500); // petite pause avant de reprendre le debut du while
}
digitalWrite(fog_control, LOW); // on a fini et on arrete le brouillard
}
void checkpotar(){
int potarLevel = analogRead(potarpin);
Serial.println(fogduration / 1000);
potarLevel = map(potarLevel, 0, 1024, 0, 9);
switch (potarLevel) {
case 0:
fogduration = 10000; // 10 secondes
break;
case 1:
fogduration = 20000; // 20 secondes
break;
case 2:
fogduration = 30000; // 30 secondes
break;
case 3:
fogduration = 60000; // 1 minute
break;
case 4:
fogduration = 120000; // 2 minutes
break;
case 5:
fogduration = 180000; // 3 minutes
break;
case 6:
fogduration = 240000; // 4 minutes
break;
case 7:
fogduration = 300000; // 5 minutes
break;
case 8:
fogduration = 360000; // 6 minutes
break;
case 9:
fogduration = 6000000; // 10 minutes
break;
}
}