aide : boite ouverture a compte a reboure Jour heur minute seconde

bonjour je suis debutant et je chercher pas mal sur les forum mes la je suis bloqué

je vous explique je veut cree une boite avec compte a rebours avec serveur moteur pour la maintenir fermé
juste au delais voulu

j'ai trouver un code sur se site electronicavm.net

qui me va bien je les modifier pour rajouté les jour mes je bloque au niveau de la compilation

j'ai un arduino uno
un ecran lcd simple (qapass) deux ligne
des bouton 5
jour
heurs
minutes seconde
et validé

voila le code

//TEMPORIZADOR ARDUINO + LCD

#include <LiquidCrystal.h> 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Inicializamos la libreria con el numero de los pines a utilizar

int ouverture = 13; //ouvert
int jours = 0; //Variable a mostrar por LCD de las jour
int heurs = 0; //Variable a mostrar por LCD de las horas
int minutes = 0; //Variable a mostrar por LCD de los minutos
int secondes = 0; //Variable a mostrar por LCD de los segundos
int secondestotal = 0; //Tiempo total
int msg= 0; //Barrera para el mensaje de bienvenida

int start = A1; //Pulsador de arranque
int empieza = 1024; // Variable para almacenaje del pulsador de arranque

int butd = A2; //Pulsador de jours
int buth = A5; //Pulsador de Horas
int butm = A4; //Pulsador de Minutos
int buts = A3; //Pulsador de segundos

int varbutd = 0; //Variable para almacenar el valor del pulsador de jours
int varbuth = 0; //Variable para almacenar el valor del pulsador de horas
int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos
int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos

void setup()
{
lcd.begin(16, 2); // Configuramos el numero de columnas y filas del LCD.

pinMode(ouverture, OUTPUT); //Pin de ouvert –> Salida
pinMode(butd, INPUT); //Pin de pulsador de jours –> Entrada
pinMode(buth, INPUT); //Pin de pulsador de horas –> Entrada
pinMode(butm, INPUT); //Pin de pulsador de minutos –> Entrada
pinMode(buts, INPUT); //Pin de pulsador de segundos –> Entrada
pinMode(start, INPUT); //Pin de pulsador de arranque –> Entrada

msg = 0; //Barrera del mensaje de bienvenida
empieza = 1024; //Barrera de arranque

varbutd = 1; //Barrera de jours
varbuth = 1; //Barrera de horas
varbutm = 1; //Barrera de minutos
varbuts = 1; //Barrera de segundos
}

void loop()
{
if(msg==0) //Mostramos el mensaje de bienvenida solo una vez
{
lcd.setCursor(0,0);
lcd.print(“Temporizador com”);
lcd.setCursor(1,1);
lcd.print(“Arduino + LCD”);
delay(2500);
msg = 1;
lcd.clear();
}
}

//————————————————————————————————-
// LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE DEL BUCLE HASTA PULSAR
// EL BOTON DE ARRANQUE
//————————————————————————————————-

do
{

varbutd = analogRead(butd); //Leemos boton de jours
varbuth = analogRead(buth); //Leemos boton de horas
varbutm = analogRead(butm); //Leemos boton de minutos
varbuts = analogRead(buts); //Leemos boton de segundos

if(varbutd == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
jours = jours + 1 ;
delay(250);
}

if(varbuth == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
heurs = heurs + 1 ;
delay(250);
}

if(varbutm == 0) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad
{
minutes = minutes + 1;
delay(250);
}

if(varbuts == 0) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad
{
secondes = secondes + 1;
delay(250);
}

lcd.setCursor(0,0);
lcd.print(” Digite o Tempo”); //Muestra mensaje y las DD:HH:MM:SS que vayamos aumentando

lcd.setCursor(4,1);

if (jours < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(jours); // Sin este codigo, se muestra asi: D:H:M:S (1:H:M:S)
lcd.print(":");

if (heurs < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(heurs); // Sin este codigo, se muestra asi: H:M:S (D:1:M:S)
lcd.print(":");

if (minutes < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(minutes); // Sin este codigo, se muestra asi: H:M:S (D:H:1:S)

lcd.print(":");
if (secondes 0)
{
delay (1000); //Descontamos en periodos de 1 segundo
secondestotal–;

jours = (((secondestotal / 60)/ 60)/ 60); //Convertimos los segundos totales en jours
heurs = ((secondestotal / 60)/ 60); //Convertimos los segundos totales en horas
minutes = (secondestotal / 60) % 60; //Convertimos los segundos totales en minutos
secondes = secondestotal % 60; //Convertimos los segundos totales en periodos de 60 segundos

lcd.setCursor(0,0);
lcd.print(“temps restant”); //Mostramos mensaje de tiempo restante

lcd.setCursor(4,1);
if (jours < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(heurs); // Sin este codigo, se muestra asi: D:H:M:S (1:H:M:S)
lcd.print(":");

lcd.setCursor(4,1);
if (heurs < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(heurs); // Sin este codigo, se muestra asi: D:H:M:S (D:1:M:S)
lcd.print(":");

if (minutes < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(minutes); // Sin este codigo, se muestra asi: D:H:M:S (D:H:1:S)

lcd.print(":");
if (secondes < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero
lcd.print(secondes); // Sin este codigo, se muestra asi: D:H:M:S (D:H:M:1)

if (secondestotal == 0) //Si finaliza el tiempo
{
while(1) //Bucle infinito mostrando mensaje y haciendo parpadear un led
{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Tempo");
lcd.setCursor(3,1);
lcd.print("Finalizado");

digitalWrite(ouverture, HIGH);
delay(200);
digitalWrite(ouverture, LOW);
delay(200);
}
}
}

}

nombre de jour max 365 merci de votre aide bonne nuits

Qu'est ce qui bloque à la compilation (j'ai pas lu le code)

sa me mais sa comme erreur

julien:3: error: #include expects "FILENAME" or <FILENAME>

 #include //Libreria del display LCD

                                    ^

exit status 1
#include expects "FILENAME" or <FILENAME>

ta librairie LiquidCrystal est bien dans le bon répertoire?

tu n'as pas des erreurs de copier/coller
dans l'article d'origine : "#include <LiquidCrystal.h> //Incluimos la libreria de control del LCD"
dans ton code du premier post : "#include <LiquidCrystal.h>"
dans le code compilé post #2 : "#include //Libreria del display LCD"

j'ai re mis le code avec le bon repertoire mes rien

toujour meme erreur

//TEMPORIZADOR ARDUINO + LCD

#include //Libreria del display LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Inicializamos la libreria con el numero de los pines a utilizar

int ouverture = 13; //ouvert
int jours = 0; //Variable a mostrar por lcd de las jour
int heurs = 0; //Variable a mostrar por lcd de las horas
int minutes = 0; //Variable a mostrar por lcd de los minutos
int secondes = 0; //Variable a mostrar por lcd de los segundos
int secondestotal = 0; //Tiempo total
int msg= 0; //Barrera para el mensaje de bienvenida

int start = A1; //Pulsador de arranque
int empieza = 1024; // Variable para almacenaje del pulsador de arranque

int butd = A2; //Pulsador de jours
int buth = A5; //Pulsador de Horas
int butm = A4; //Pulsador de Minutos
int buts = A3; //Pulsador de segundos

int varbutd = 0; //Variable para almacenar el valor del pulsador de jours
int varbuth = 0; //Variable para almacenar el valor del pulsador de horas
int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos
int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos

void setup()
{
lcd.begin(16, 2); // Configuramos el numero de columnas y filas del lcd.

pinMode(ouverture, OUTPUT); //Pin de ouvert –> Salida
pinMode(butd, INPUT); //Pin de pulsador de jours –> Entrada
pinMode(buth, INPUT); //Pin de pulsador de horas –> Entrada
pinMode(butm, INPUT); //Pin de pulsador de minutos –> Entrada
pinMode(buts, INPUT); //Pin de pulsador de segundos –> Entrada
pinMode(start, INPUT); //Pin de pulsador de arranque –> Entrada

msg = 0; //Barrera del mensaje de bienvenida
empieza = 1024; //Barrera de arranque

varbutd = 1; //Barrera de jours
varbuth = 1; //Barrera de horas
varbutm = 1; //Barrera de minutos
varbuts = 1; //Barrera de segundos
}

void loop()
{
if(msg==0) //Mostramos el mensaje de bienvenida solo una vez
{
lcd.setCursor(0,0);
lcd.print(“Temporizador com”);
lcd.setCursor(1,1);
lcd.print(“Arduino + lcd”);
delay(2500);
msg = 1;
lcd.clear();
}
}

//————————————————————————————————-
// LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE DEL BUCLE HASTA PULSAR
// EL BOTON DE ARRANQUE
//————————————————————————————————-

do
{

varbutd = analogRead(butd); //Leemos boton de jours
varbuth = analogRead(buth); //Leemos boton de horas
varbutm = analogRead(butm); //Leemos boton de minutos
varbuts = analogRead(buts); //Leemos boton de segundos

if(varbutd == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
jours = jours + 1 ;
delay(250);
}

if(varbuth == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
heurs = heurs + 1 ;
delay(250);
}

if(varbutm == 0) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad
{
minutes = minutes + 1;
delay(250);
}

if(varbuts == 0) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad
{
secondes = secondes + 1;
delay(250);
}

lcd.setCursor(0,0);
lcd.print(” Digite o Tempo”); //Muestra mensaje y las DD:HH:MM:SS que vayamos aumentando

lcd.setCursor(4,1);

if (jours < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(jours); // Sin este codigo, se muestra asi: D:H:M:S (1:H:M:S)
lcd.print(":");

if (heurs < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(heurs); // Sin este codigo, se muestra asi: H:M:S (D:1:M:S)
lcd.print(":");

if (minutes < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(minutes); // Sin este codigo, se muestra asi: H:M:S (D:H:1:S)

lcd.print(":");
if (secondes 0)
{
delay (1000); //Descontamos en periodos de 1 segundo
secondestotal–;

jours = (((secondestotal / 60)/ 60)/ 60); //Convertimos los segundos totales en jours
heurs = ((secondestotal / 60)/ 60); //Convertimos los segundos totales en horas
minutes = (secondestotal / 60) % 60; //Convertimos los segundos totales en minutos
secondes = secondestotal % 60; //Convertimos los segundos totales en periodos de 60 segundos

lcd.setCursor(0,0);
lcd.print(“temps restant”); //Mostramos mensaje de tiempo restante

lcd.setCursor(4,1);
if (jours < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(heurs); // Sin este codigo, se muestra asi: D:H:M:S (1:H:M:S)
lcd.print(":");

lcd.setCursor(4,1);
if (heurs < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(heurs); // Sin este codigo, se muestra asi: D:H:M:S (D:1:M:S)
lcd.print(":");

if (minutes < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(minutes); // Sin este codigo, se muestra asi: D:H:M:S (D:H:1:S)

lcd.print(":");
if (secondes < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero
lcd.print(secondes); // Sin este codigo, se muestra asi: D:H:M:S (D:H:M:1)

if (secondestotal == 0) //Si finaliza el tiempo
{
while(1) //Bucle infinito mostrando mensaje y haciendo parpadear un led
{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Tempo");
lcd.setCursor(3,1);
lcd.print("Finalizado");

digitalWrite(ouverture, HIGH);
delay(200);
digitalWrite(ouverture, LOW);
delay(200);
}
}
}

}

erreur

julien:3: error: #include expects "FILENAME" or <FILENAME>

 #include //Libreria del display LCD

                                    ^

exit status 1
#include expects "FILENAME" or <FILENAME>

il doit me manquer peut etre un repertoire mes je le trouve pas si possible de me mettre un lien merci

c'est celle ci qu'il faut ligne 3 : "#include <LiquidCrystal.h>"

mais il y a d'autres erreurs ....

oui je vois sa plein d erreur comment les corrigé
stp

faire un CTRL+T dans l'IDE pour indenter ton code
ou as tu pris le code d'origine ?
est ce qu'il compile sans erreurs (sans le modifier) ?
il faut a minima apprendre quelques bases (tuto Eskimon) avant de faire des trucs plus compliqués

Si c'est la librairie standard elle doit etre dans C:\Program Files (x86)\Arduino\libraries
sinon dans C:\Users\tonUser\Documents\Arduino\libraries

Et pourquoi tu utilise un Do? ca serait mieux un While.

Et ou est la condition a la fin de ton Do qui doit etre structuré ainsi?

do
{
// statement block

} while (test condition);

Il manque le while correspondant a ton DO, le while(1) en ligne 148 n' a rien a voir avec le Do

Et au lieu de decouper les heures minutes secondes tu devrais utiliser la fonction millis qui me sure le temps au lancement du programme et calculer le temps sur sa valeur en retour.

j'utilise le code copier sur le lien mis au debut et modifie comme je peut je suis debutant

comme vous le voyez

le "do" je le connais pas

je mais anouveau le code qui a un peut change

//TEMPORIZADOR ARDUINO + LCD

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Inicializamos la libreria con el numero de los pines a utilizar

int ouverture = 13; //ouvert
int jours = 0; //Variable a mostrar por lcd de las jour
int heurs = 0; //Variable a mostrar por lcd de las horas
int minutes = 0; //Variable a mostrar por lcd de los minutos
int secondes = 0; //Variable a mostrar por lcd de los segundos
int secondestotal = 0; //Tiempo total
int msg = 0; //Barrera para el mensaje de bienvenida

int start = A1; //Pulsador de arranque
int empieza = 1024; // Variable para almacenaje del pulsador de arranque

int butd = A2; //Pulsador de jours
int buth = A5; //Pulsador de Horas
int butm = A4; //Pulsador de Minutos
int buts = A3; //Pulsador de segundos

int varbutd = 0; //Variable para almacenar el valor del pulsador de jours
int varbuth = 0; //Variable para almacenar el valor del pulsador de horas
int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos
int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos

void setup()
{
  lcd.begin(16, 2); // Configuramos el numero de columnas y filas del lcd.

  pinMode(ouverture, OUTPUT); //Pin de ouvert –> Salida
  pinMode(butd, INPUT); //Pin de pulsador de jours –> Entrada
  pinMode(buth, INPUT); //Pin de pulsador de horas –> Entrada
  pinMode(butm, INPUT); //Pin de pulsador de minutos –> Entrada
  pinMode(buts, INPUT); //Pin de pulsador de segundos –> Entrada
  pinMode(start, INPUT); //Pin de pulsador de arranque –> Entrada

  msg = 0; //Barrera del mensaje de bienvenida
  empieza = 1024; //Barrera de arranque

  varbutd = 1; //Barrera de jours
  varbuth = 1; //Barrera de horas
  varbutm = 1; //Barrera de minutos
  varbuts = 1; //Barrera de segundos
}

void loop()
{
  if (msg == 0)
  {
    lcd.setCursor(0, 0);
    lcd.print ("Arduino + lcd");
    lcd.setCursor(1, 1);
    lcd.print("Arduino + lcd");
    delay(2500);
    msg = 1;
    lcd.clear();
  }
}


do
{

  varbutd = analogRead(butd); //Leemos boton de jours
  varbuth = analogRead(buth); //Leemos boton de horas
  varbutm = analogRead(butm); //Leemos boton de minutos
  varbuts = analogRead(buts); //Leemos boton de segundos

} while (test condition);

if (varbutd == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
  jours = jours + 1 ;
  delay(250);
}

if (varbuth == 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
  heurs = heurs + 1 ;
  delay(250);
}

if (varbutm == 0) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad
{
  minutes = minutes + 1;
  delay(250);
}

if (varbuts == 0) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad
{
  secondes = secondes + 1;
  delay(250);
}

lcd.setCursor(0, 0);
lcd.print ("Arduino + lcd"); //Muestra mensaje y las DD:HH:MM:SS que vayamos aumentando

lcd.setCursor(4, 1);

if (jours < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print (jours); // Sin este codigo, se muestra asi: D:H:M:S (1:H:M:S)
lcd.print (":");

if (heurs < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print (heurs); // Sin este codigo, se muestra asi: H:M:S (D:1:M:S)
lcd.print (":");

if (minutes < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print (minutes); // Sin este codigo, se muestra asi: H:M:S (D:H:1:S)

lcd.print (":");
if (secondes 0)
{
  delay (1000); //Descontamos en periodos de 1 segundo


  jours = (((secondestotal / 60) / 60) / 60); //Convertimos los segundos totales en jours
  heurs = ((secondestotal / 60) / 60); //Convertimos los segundos totales en horas
  minutes = (secondestotal / 60) % 60; //Convertimos los segundos totales en minutos
  secondes = secondestotal % 60; //Convertimos los segundos totales en periodos de 60 segundos

  lcd.setCursor(0, 0);
  lcd.print ("Arduino + lcd"); //Mostramos mensaje de tiempo restante

  lcd.setCursor(4, 1);
  if (jours < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
  lcd.print(heurs); // Sin este codigo, se muestra asi: D:H:M:S (1:H:M:S)
  lcd.print(":");

  lcd.setCursor(4, 1);
  if (heurs < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
  lcd.print(heurs); // Sin este codigo, se muestra asi: D:H:M:S (D:1:M:S)
  lcd.print(":");

  if (minutes < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
  lcd.print(minutes); // Sin este codigo, se muestra asi: D:H:M:S (D:H:1:S)

  lcd.print(":");
  if (secondes < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero
  lcd.print(secondes); // Sin este codigo, se muestra asi: D:H:M:S (D:H:M:1)

  if (secondestotal == 0) //Si finaliza el tiempo
  {
    while (1) //Bucle infinito mostrando mensaje y haciendo parpadear un led
    {
      lcd.clear();
      lcd.setCursor(5, 0);
      lcd.print("Tempo");
      lcd.setCursor(3, 1);
      lcd.print("Finalizado");

      digitalWrite(ouverture, HIGH);
      delay(200);
      digitalWrite(ouverture, LOW);
      delay(200);
    }
  }
}

}

si vous pouvez me le corriger sa serai super sympas merci

Deja refait une indentation correcte pour voir ou commence et ou finissent les IF les while etc et tu verra que ta boucle DO est foireuse

et comment je fait cela????

je ne sais pas ou tu as trouve ce code (moi le lien vers le code est cassé) mais ça ne peut pas fonctionner
regardes ce post qui semble être la même chose sur le post #16 il semble fonctionner
mais tu n'arriveras a rien si tu n'apprend pas les bases

j'ai fais comme tu ma dit via le lien

affichage ok mes bouton aucune action

//Temporizador ehrja 26/02/2015
//Originalmente de una duda en el ciclo do, de un codigo escrito por Flecho.
//http://forum.arduino.cc/index.php?topic=300828.0

#include <LiquidCrystal.h> //Libreria del display LCD
#include <Wire.h>
LiquidCrystal lcd(12,11,5,4,3,2); //Inicializamos la libreria con el numero de los pines a utilizar


byte jours, heurs, minutes, secondes;

byte pinBuz = 13;
byte pinJou = A5;
byte pinSta = A0;
byte pinHor = A1;
byte pinMin = A2;
byte pinSeg = A3;

boolean SSS; //start Stop State
byte seguro;

unsigned long lastMillis;
void setup() {

 pinMode(pinBuz, OUTPUT);              //Pin salida visual y/o sonora
 pinMode(pinSta, INPUT_PULLUP);        //Pin boton Start
 pinMode(pinJou, INPUT_PULLUP);        //Pin boton heurs
 pinMode(pinHor, INPUT_PULLUP);        //Pin boton heurs
 pinMode(pinMin, INPUT_PULLUP);        //Pin boton minutes
 pinMode(pinSeg, INPUT_PULLUP);        //Pin boton secondes
 startLCD();

 //Inicializamos las variables del tiempo, ese sera el valor inicial.
 jours = 0 ;
 heurs = 0 ;
 minutes = 0;
 secondes = 0;
}

void loop() {

 do {//<------inicia do
   manage_SSS();  //función que activa y libera el ciclo do y el ciclo while
   //--------RUTINA ESCOGER EL TIEMPO EN PANTALLA.
   lcd.home();     //regresa el cursor a la posición (0,0)
   lcd.print("Elige el tiempo");
   printTime();    // imprime el tiempo en la segunda linea de la pantalla

   //--------RUTINA BOTONES DE TIEMPO.
  if (digitalRead(pinSeg) == LOW)
   { delay(200);                         //retraso para evitar falso conteo
     jours++;
     if (jours > 365) jours = 0;         //jours máximos permitidos 365
   }
   
   if (digitalRead(pinHor) == LOW)
   { delay(200);                        //retraso para evitar falso conteo
     heurs++;
     if (heurs > 99) heurs = 0;         //heurs máximas permitidas 99
   }

   if (digitalRead(pinMin) == LOW)
   { delay(200);                         //retraso para evitar falso conteo
     minutes++;
     if (minutes > 60) minutes = 0;      //minutes máximos permitidos 60
   }

   if (digitalRead(pinSeg) == LOW)
   { delay(200);                         //retraso para evitar falso conteo
     secondes++;
     if (secondes > 60) secondes = 0;    //secondes máximos permitidos 60
   }

 }
 while (!SSS); //SSS = FALSE

 while (SSS) //<----inicia whie // SSS = TRUE
 { manage_SSS();//<----función que activa y libera el ciclo do y el ciclo while
   lcd.home();
   lcd.print("Temps restante");
   //    printTime();  // imprime el tiempo en la segunda linea de la pantalla
   //A PARTIR DE AQUÍ INICIA EL CALCULO DEL TIEMPO RESTANTE, CADA 1000 MS
   if (millis() - lastMillis >= 1000)
   {
     lastMillis = millis();// junto con la comprobación, posibilita ejecutarse una vez cada segundo.
     
     if (secondes > 0 ) secondes--;    //decremento un segundo cada vez
     if (secondes == 0 && minutes > 0) //si secondes = 0 y hay minutes 
     {
       minutes--;                       //decremento un minuto cada vez
       secondes = 59;                   //decremento un segundo del minuto restado
     }
     if (minutes == 0 && heurs > 0)     //si minutes = 0 y hay heurs
     {
       heurs--;                         //decremento una hora
       minutes = 59;                    //decremento un minuto a la hora restada.
     }
   } //TERMINA EL CALCULO DEL TIEMPO RESTANTE
     //EMPIEZA LA RUTINA "TIEMPO FINALIZADO"
     if (jours == 0 &&heurs == 0 && minutes == 0 && secondes == 0) //<----  ¿no hay tiempo?.
     {
       lcd.clear();
       lcd.setCursor(5, 0);
       lcd.print("Tiempo");
       lcd.setCursor(3, 1);
       lcd.print("Finalizado");


       digitalWrite(pinBuz, HIGH);
       delay(200);
       digitalWrite(pinBuz, LOW);
       delay(200);
     }else printTime();  // imprime el tiempo en la segunda linea de la pantalla
   }
 }

 void manage_SSS() { //función que cambia el estado de SSS, y evita atascos
   //se ejecuta en ambos ciclos, para poder salir de ambos.
   if (digitalRead(pinSta) == LOW && seguro == 0) //si el pinSta esta en low y seguro = 0
   {lcd.clear();        //agrego un clear porque cuando termina el tiempo queda F00:00:00o
     SSS = !SSS;        //el valor de SSS = cambia a su contrario
     seguro++;          //seguro cambia de cero a 1 y con esto evitamos un falso cambio
   }                    //cuando el pinSta continua en low,es decir solo pasara una vez.

   if (digitalRead(pinSta) == HIGH) seguro = 0;
   //cuando pinSta sea liberado cambiara su estado a HIGH y seguro = 0
   //con esto posibilitamos que la condición anterior se pueda ejecutar nuevamente
   // y por una vez cuando sea presionado nuevamente (pinSta = LOW)
   //no necesita delay pues el seguro entra inmediato

 }

 void printTime() {
   // función simple que imprime el tiempo en la segunda linea
   // con esto evitamos repetir código en el ciclo do y en el ciclo while
   lcd.setCursor(2, 1);
   if (jours < 10)lcd.print("0");
   lcd.print(jours);
   lcd.print(":");
   if (heurs < 10)lcd.print("0");
   lcd.print(heurs);
   lcd.print(":");
   if (minutes < 10)lcd.print("0");
   lcd.print(minutes);
   lcd.print(":");
   if (secondes < 10)lcd.print("0");
   lcd.print(secondes);
 }

 void startLCD() {
   // + + + + + + + + + + + + + + + + + + + + + //
   //  ---- Rutina de inicio Splash Screen ---- //
   // + + + + + + + + + + + + + + + + + + + + + //
   lcd.begin(16, 2);
   byte customChar1[8] = {
     B00000,
     B00100,
     B01110,
     B11111,
     B01110,
     B00100,
     B00000,
     B00000
   };
   byte customChar2[8] = {
     B00000,
     B00100,
     B01010,
     B10101,
     B01010,
     B00100,
     B00000,
     B00000
   };

   lcd.createChar(0, customChar1);
   lcd.createChar(1, customChar2);

   // --- inicia rutina --- //

   lcd.setCursor(3, 0);
   lcd.print("ACTIVACION");
   lcd.setCursor(0, 1);
   lcd.write(byte(0));
   lcd.setCursor(1, 1);
   lcd.print("--------------");
   lcd.setCursor(15, 1);
   lcd.write(byte(1));
   delay(2500);
   lcd.clear();

   lcd.setCursor(0, 0);
   lcd.print("Temporisation");
   lcd.setCursor(1, 1);
   lcd.print("A toi de joué");
   delay(2500);
   lcd.clear();
 }

il faut revoir le câblage de tes boutons :

  • dans ton premier lien ils sont utilisés avec des pulldown externes
  • dans ce code ils sont utilisés avec des pullup internes
    sur la toile on trouve de tout :
  • des trucs qui fonctionnent
  • des trucs foireux
    il faut absolument que tu apprenne les bases si tu veux arriver a quelque chose qui fonctionne, ici on est pas la pour te faire ton code mais pour t'aider à le faire fonctionner ...

tout fonctionne merci

deux chose reste la premier incorporé un code
du servomoteur qui a une tempo de 30 sec avent position du blocage

et incorporé le tiny rtc 12c
avec son code donc meme souci ou l'incorporé

merci