Bonjour,

J'ai une tempo avec un BP fait avec (DELAY) que j'aimerai modifier afin de ne plus utiliser DELAY mais MILLIS.

Son fonctionnement :
Si le BP est à 0 la sortie 13 est à 0
Si le BP est à 1 la sortie 13 passe à 1 après un délai que l'on peut modifier.

J'ai essayé d'utiliser MILLIS mais, mes compétences en programmation ne m’ont pas permis d'y arriver, pourriez-vous m'aider, merci.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
 const int BP = 2; 
 unsigned long temps;
 int Time =4600;   
 int relais1 = 6; 
 unsigned long randOn1 = 0;
 unsigned long randOnStart1 = 0;
 unsigned long randOff1 = 0;
 unsigned long randOffStart1 = 0;
 
 void setup() {
 Serial.begin(115200);
 pinMode(BP, INPUT);
 pinMode(relais1, OUTPUT);
 }
 
 void loop() {
 if (digitalRead(BP) == HIGH) {                                
     digitalWrite(relais1, LOW);
     delay(Time);
 }   
 if (randOn1 == 0 && randOff1 == 0) {                          // Si le cycle On/Off est termine
     randOn1 = random (150, 3900);
     randOff1 = random (10,500);
     digitalWrite(relais1, HIGH);                              // Le relais est On
     randOnStart1 = millis();                                  // Debut temporisation On
}
if (randOn1 !=0 && (millis() - randOnStart1 >= randOn1)) {     //Si temporisation On terminee
    randOn1 = 0;
    digitalWrite(relais1, LOW);                                // Le relais est Off
    randOffStart1 = millis();                                  // Debut temporisation Off
}
if (randOn1 ==0 && (millis() - randOffStart1 >= randOff1)) {   // Si temporisation Off terminee
    randOff1 = 0;
}
}