ce qui donne avec mon code : regardez dans le "void ArretProg"
et ça ne fonctionne pas.
void ArretProg(){
digitalWrite(LEDS, HIGH); // on allume le carré
lcd.clear(); // Efface LCD
delay(10); // pour laisser temps d'effacer l'écran
milliref = millis(); // mémorisation de la valeur de millis() courante
while(time>0) { // si la tempo n'est pas fini
if (millis() > (milliref + 1000)) { // si une seconde s'est écoulée
seconde = seconde - 1; // Décrémente le comptage des secondes
time = time - 1; // Décrémente Temps total secondes
milliref = milliref + 1000; // incrémente la valeur de référence milliseconde
}
if (minute > 0) {
if (seconde < 0) {
minute--; // Décrémente une minute si le comptage des secondes arrivent à 0 et si les minutes sont sup?rieurs à 0
seconde = 59; // reset seconde à 60
}
}
if (heure > 0) {
if (minute <= 0) {
if (time == 3600 * heure - 1) {
heure--; // Décrémente une heure si le comptage des minutes arrivent à 0 et si les heures sont supérieurs à 0 et si le temps total est un multiple de 3600 seconde (1 heure)
minute = 59; // reset minutes à 60
seconde = 59;
}
}
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Extinction dans:");
lcd.setCursor(4, 1);
lcd.print("00:00:00"); // Affiche le format du Compte à rebours
// Imprime les heures sur la collone 4 si ils sont supérieur à 10, et sur la colonne 5 si inférieur à 10:
if (heure >= 10) {
lcd.setCursor(4, 1);
}
else{
lcd.setCursor(5, 1);
}
lcd.print(heure);
// Imprime les minutes sur la collone 7 si ils sont supérieur à 10, et sur la colonne 8 si inférieur à 10:
if (minute >= 10){
lcd.setCursor(7, 1);
}
else {
lcd.setCursor(8, 1);
}
lcd.print(minute);
// Imprime les seconde sur la collone 10 si ils sont supérieur à 10, et sur la colonne 11 si inférieur à 10:
if (seconde >= 10){
lcd.setCursor(10, 1);
}
else {
lcd.setCursor(11, 1);
}
lcd.print(seconde);
delay(980); // Délais de rafraichisement LCD
lcd.clear();
// en cas de mouvement du bouton rotatif
//initialisation de l'encodeur rotatif
encoderPos = 0;
n = digitalRead(PinCLK);
if ((PinCLKLast == LOW) && (n == HIGH)) {
if (digitalRead(PinDT) == LOW) {
encoderPos--;
minute = minute-30;
if ( encoderPos < 0 ) {
encoderPos = nbPas;
}
} else {
encoderPos++;
minute = minute+30;
if ( encoderPos > ( nbPas - 1 ) ) {
encoderPos = 0;
}
}
}
PinCLKLast = n;
// si on appuis sur BP arret pendant le décompte
if (digitalRead (BPARRET) == LOW){
ARRET(); //on lance le sous programe d'arret
}
// lorsque le compte à rebours est fini
if(time <= 0){
lcd.clear(); // efface l'écran
lcd.setCursor(2, 0);
lcd.print("Carre eteint"); // Affiche carré éteint
digitalWrite(LEDS, LOW); // on éteint le carré
delay(3000);
lcd.clear();
lcd.setCursor(0, 0); //on met le curseur en haut à gauche
lcd.print("Carre en attente"); //on affiche carré en attente sur la première ligne
lcd.setCursor(2, 1); //on met le curseur sur la seconde ligne de l'afficheur
lcd.print("d'activation"); //et on affiche d'activation
}
}
}
void ARRET(){
heure = 0;
minute = 0;
seconde = 0;
time = (seconde + (60 * minute) + (3600 * heure));
}