Bonjour à tous,
J'ai une petite quastion concernant la fonction millis().
Je fais l'équivalent d'un "sleep timer" TV pour mon système home cinéma (home-made avec Mega 2560)
Donc, j'ai créé 4 différentes fonctions millis(), pour 60, 90, 120, et 180 minutes.
Mais je me dit que si je veux arrêter ce sleep timer, comment puis-je arrêter la fonction millis() ?
J'ai déjà fait pas mal de recherches, mais je n'ai encore rien trouvé...
Voici une partie du code :
// Sleep 60'
boolean Sleep1On;
unsigned short currentSleep1time = 0;
unsigned short Sleep1_StartMillis;
#define SEUILSleep1 3600000
// Sleep 90'
boolean Sleep2On;
unsigned short currentSleep2time = 0;
unsigned short Sleep2_StartMillis;
#define SEUILSleep2 5400000
// Sleep 120'
boolean Sleep3On;
unsigned short currentSleep3time = 0;
unsigned short Sleep3_StartMillis;
#define SEUILSleep3 7200000
// Sleep 180'
boolean Sleep4On;
unsigned short currentSleep4time = 0;
unsigned short Sleep4_StartMillis;
#define SEUILSleep4 10800000
void setup() {
Sleep1On = false;
Sleep2On = false;
Sleep3On = false;
Sleep4On = false;
}
void loop(){
if(inByte == '?') {
Sleep1_StartMillis = millis();
currentSleep1time = 0;
Sleep1On = true;
}else{
if(Sleep1On){
currentSleep1time = millis() - Sleep1_StartMillis;
if(currentSleep1time > SEUILSleep1){
Sleep1On = false;
digitalWrite(Led1, HIGH);
delay(100);
digitalWrite(Led2, HIGH);
delay(100);
digitalWrite(Ampli, HIGH);
delay(100);
digitalWrite(Sub, HIGH);
delay(100);
digitalWrite(Box, HIGH);
delay(100);
digitalWrite(Decoder, HIGH);
delay(100);
digitalWrite(Hdmi, HIGH);
delay(100);
digitalWrite(VPC, HIGH);
delay(100);
digitalWrite(VAMP, HIGH);
delay(100);
digitalWrite(Hdd1, HIGH);
delay(100);
digitalWrite(Hdd2, HIGH);
delay(100);
digitalWrite(Hdd3, HIGH);
delay(100);
digitalWrite(Hdd4, HIGH);
delay(100);
digitalWrite(Hdd5, HIGH);
delay(100);
digitalWrite(Hdd6, HIGH);
delay(100);
digitalWrite(a12v, HIGH);
delay(100);
}
}
}
if(inByte == '!') {
Sleep2_StartMillis = millis();
currentSleep2time = 0;
Sleep2On = true;
}else{
if(Sleep2On){
currentSleep2time = millis() - Sleep2_StartMillis;
if(currentSleep2time > SEUILSleep2){
Sleep2On = false;
digitalWrite(Led1, HIGH);
delay(100);
digitalWrite(Led2, HIGH);
delay(100);
digitalWrite(Ampli, HIGH);
delay(100);
digitalWrite(Box, HIGH);
delay(100);
digitalWrite(Decoder, HIGH);
delay(100);
digitalWrite(Hdmi, HIGH);
delay(100);
digitalWrite(VPC, HIGH);
delay(100);
digitalWrite(VAMP, HIGH);
delay(100);
digitalWrite(Hdd1, HIGH);
delay(100);
digitalWrite(Hdd2, HIGH);
delay(100);
digitalWrite(Hdd3, HIGH);
delay(100);
digitalWrite(Hdd4, HIGH);
delay(100);
digitalWrite(Hdd5, HIGH);
delay(100);
digitalWrite(Hdd6, HIGH);
delay(100);
digitalWrite(a12v, HIGH);
delay(100);
}
}
}
if(inByte == '*') {
Sleep3_StartMillis = millis();
currentSleep3time = 0;
Sleep3On = true;
}else{
if(Sleep3On){
currentSleep3time = millis() - Sleep3_StartMillis;
if(currentSleep3time > SEUILSleep3){
Sleep3On = false;
digitalWrite(Led1, HIGH);
delay(100);
digitalWrite(Led2, HIGH);
delay(100);
digitalWrite(Ampli, HIGH);
delay(100);
digitalWrite(Box, HIGH);
delay(100);
digitalWrite(Decoder, HIGH);
delay(100);
digitalWrite(Hdmi, HIGH);
delay(100);
digitalWrite(VPC, HIGH);
delay(100);
digitalWrite(VAMP, HIGH);
delay(100);
digitalWrite(Hdd1, HIGH);
delay(100);
digitalWrite(Hdd2, HIGH);
delay(100);
digitalWrite(Hdd3, HIGH);
delay(100);
digitalWrite(Hdd4, HIGH);
delay(100);
digitalWrite(Hdd5, HIGH);
delay(100);
digitalWrite(Hdd6, HIGH);
delay(100);
digitalWrite(a12v, HIGH);
delay(100);
}
}
}
if(inByte == '+') {
Sleep4_StartMillis = millis();
currentSleep4time = 0;
Sleep4On = true;
}else{
if(Sleep4On){
currentSleep4time = millis() - Sleep4_StartMillis;
if(currentSleep4time > SEUILSleep4){
Sleep4On = false;
digitalWrite(Led1, HIGH);
delay(100);
digitalWrite(Led2, HIGH);
delay(100);
digitalWrite(Ampli, HIGH);
delay(100);
digitalWrite(Box, HIGH);
delay(100);
digitalWrite(Decoder, HIGH);
delay(100);
digitalWrite(Hdmi, HIGH);
delay(100);
digitalWrite(VPC, HIGH);
delay(100);
digitalWrite(VAMP, HIGH);
delay(100);
digitalWrite(Hdd1, HIGH);
delay(100);
digitalWrite(Hdd2, HIGH);
delay(100);
digitalWrite(Hdd3, HIGH);
delay(100);
digitalWrite(Hdd4, HIGH);
delay(100);
digitalWrite(Hdd5, HIGH);
delay(100);
digitalWrite(Hdd6, HIGH);
delay(100);
digitalWrite(a12v, HIGH);
delay(100);
}
}
}
}
Et j'aimerais rajouter un "SleepStop" pour annuler l'extinction des différents relais...
Grand merci d'avance pour votre aide !
Aegnor