problème code réveil il fonctionne mais pas correctement

Bonjour je cherches à faire un réveil en arduino pour l'instant je n'arrives que afficher leur heure et une led pour simulé l'effet d un haut parleur lors du réveil .Problème la led s'éteint après 7 secondes alors que dans le code j'ai mis 10 secondes et autre problème j'avais branché un buzzer qui s'arrêtait lui aussi après 7 secondes comme la led mais qui après ces 7 secondes fessait encore un bruit même après avoir utiliser la fonction noTone voici le code

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
//boutons//
int bouton1=6;
int bouton2=7;
int bouton3=8;
unsigned long tempsbouton1;
unsigned long tempsbouton2;
unsigned long tempsbouton3;
//temps//
unsigned long temps;
int secondes=0;
int minutes=0;
int heures=0;
//reveil//
int minutesre=0;
int heuresre=0;
unsigned long tempsre;
//position de l'horloge//
int positionhorloge=0;
void setup() {
lcd.begin(16,2);
pinMode(bouton1,INPUT);
pinMode(bouton2,INPUT);
pinMode(bouton3,INPUT);
lcd.setCursor(10,0);
lcd.print(":");
lcd.setCursor(13,0);
lcd.print(":");
lcd.setCursor(10,1);
lcd.print(":");
lcd.setCursor(13,1);
lcd.print(":");
temps=millis();
tempsbouton1=millis();
tempsbouton2=millis();
tempsbouton3=millis();
tempsre=millis();
pinMode(13,OUTPUT);
}

void loop() {
if (millis()-tempsbouton1>200){
if(digitalRead(bouton1)==1){
positionhorloge++;
}
tempsbouton1=millis();
}
if(positionhorloge==0){
if(millis()-tempsbouton2>200){
tempsbouton2=millis();
if(digitalRead(bouton2)==1){
heures++;
}
}
if(millis()-tempsbouton3>200){
tempsbouton3=millis();
if(digitalRead(bouton3)==1){
minutes++;
}
}
}
if(positionhorloge==1){
if(millis()-tempsbouton2>200){
tempsbouton2=millis();
if(digitalRead(bouton2)==1){
heuresre++;
}
}
if(millis()-tempsbouton3>200){
tempsbouton3=millis();
if(digitalRead(bouton3)==1){
minutesre++;
}
}
}
if(positionhorloge==2){
if(heures==heuresre&&minutes==minutesre){
digitalWrite(13,HIGH);
if(millis()-tempsre>10000){
digitalWrite(13,LOW);

}
}
if(millis()-temps>1000){
temps=millis();
secondes++;
}
}
if(positionhorloge==3){
secondes=0;
minutes=0;
heures=0;
minutesre=0;
heuresre=0;
positionhorloge=0;
}
if(secondes>=60){
secondes=0;
minutes++;
}
if(minutes>=60){
minutes=0;
heures++;
}
if(heures>=24){
heures=0;
}
if(heures>=0&&heures<=9){
lcd.setCursor(8,0);
lcd.print("0");
lcd.setCursor(9,0);
lcd.print(heures);
}
if(heures>=10&&heures<=24){
lcd.setCursor(8,0);
lcd.print(heures);
}
if(minutes>=0&&minutes<=9){
lcd.setCursor(11,0);
lcd.print("0");
lcd.setCursor(12,0);
lcd.print(minutes);
}
if(minutes>=10&&minutes<=60){
lcd.setCursor(11,0);
lcd.print(minutes);
}
if(secondes>=0&&secondes<=9){
lcd.setCursor(14,0);
lcd.print("0");
lcd.setCursor(15,0);
lcd.print(secondes);
}
if(secondes>=10&&secondes<=60){
lcd.setCursor(14,0);
lcd.print(secondes);
}
if(heuresre>=0&&heuresre<=9){
lcd.setCursor(8,1);
lcd.print("0");
lcd.setCursor(9,1);
lcd.print(heuresre);
}
if(heuresre>=10&&heuresre<=24){
lcd.setCursor(8,1);
lcd.print(heuresre);
}
if(minutesre>=0&&minutesre<=9){
lcd.setCursor(11,1);
lcd.print("0");
lcd.setCursor(12,1);
lcd.print(minutesre);
}
if(minutesre>=10&&minutesre<=60){
lcd.setCursor(11,1);
lcd.print(minutesre);
}
lcd.setCursor(1,1);
lcd.print(positionhorloge);
}

hello

c'est ici pour mettre ton code entre balises

edit: et la rtc?

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
//boutons//
int bouton1=6;
int bouton2=7;
int bouton3=8;
unsigned long tempsbouton1;
unsigned long tempsbouton2;
unsigned long tempsbouton3;
//temps//
unsigned long temps;
int secondes=0;
int minutes=0;
int heures=0;
//reveil//
int minutesre=0;
int heuresre=0;
unsigned long tempsre;
//position de l'horloge//
int positionhorloge=0;
void setup() {
 lcd.begin(16,2);
 pinMode(bouton1,INPUT);
 pinMode(bouton2,INPUT);
 pinMode(bouton3,INPUT);
lcd.setCursor(10,0);
lcd.print(":");
lcd.setCursor(13,0);
lcd.print(":");
lcd.setCursor(10,1);
lcd.print(":");
lcd.setCursor(13,1);
lcd.print(":");
temps=millis();
tempsbouton1=millis();
tempsbouton2=millis();
tempsbouton3=millis();
tempsre=millis();
pinMode(13,OUTPUT);
}

void loop() {
  if (millis()-tempsbouton1>200){
   if(digitalRead(bouton1)==1){
    positionhorloge++;
   }
  tempsbouton1=millis();
  }
  if(positionhorloge==0){
    if(millis()-tempsbouton2>200){
     tempsbouton2=millis();
     if(digitalRead(bouton2)==1){
      heures++;
     }
    }
  if(millis()-tempsbouton3>200){
   tempsbouton3=millis();
   if(digitalRead(bouton3)==1){
    minutes++; 
   }
  }
  }
if(positionhorloge==1){
 if(millis()-tempsbouton2>200){
     tempsbouton2=millis();
     if(digitalRead(bouton2)==1){
      heuresre++;
     }
    }
  if(millis()-tempsbouton3>200){
   tempsbouton3=millis();
   if(digitalRead(bouton3)==1){
    minutesre++; 
   }
  } 
}
if(positionhorloge==2){
  if(heures==heuresre&&minutes==minutesre){
    digitalWrite(13,HIGH);
    if(millis()-tempsre>10000){
    digitalWrite(13,LOW);
    
    }
  }
  if(millis()-temps>1000){
    temps=millis();
    secondes++;
  }
}
if(positionhorloge==3){
 secondes=0;
 minutes=0;
 heures=0;
 minutesre=0;
 heuresre=0;
positionhorloge=0;
}
if(secondes>=60){
  secondes=0;
  minutes++;
}
if(minutes>=60){
  minutes=0;
  heures++;
}
if(heures>=24){
  heures=0;
}
if(heures>=0&&heures<=9){
  lcd.setCursor(8,0);
  lcd.print("0");
  lcd.setCursor(9,0);
  lcd.print(heures);
}
if(heures>=10&&heures<=24){
  lcd.setCursor(8,0);
  lcd.print(heures);
}
if(minutes>=0&&minutes<=9){
  lcd.setCursor(11,0);
  lcd.print("0");
  lcd.setCursor(12,0);
  lcd.print(minutes);
}
if(minutes>=10&&minutes<=60){
  lcd.setCursor(11,0);
  lcd.print(minutes);
}
if(secondes>=0&&secondes<=9){
  lcd.setCursor(14,0);
  lcd.print("0");
  lcd.setCursor(15,0);
  lcd.print(secondes);
}
if(secondes>=10&&secondes<=60){
  lcd.setCursor(14,0);
  lcd.print(secondes);
}
if(heuresre>=0&&heuresre<=9){
  lcd.setCursor(8,1);
  lcd.print("0");
  lcd.setCursor(9,1);
  lcd.print(heuresre);
}
if(heuresre>=10&&heuresre<=24){
  lcd.setCursor(8,1);
  lcd.print(heuresre);
}
if(minutesre>=0&&minutesre<=9){
  lcd.setCursor(11,1);
  lcd.print("0");
  lcd.setCursor(12,1);
  lcd.print(minutesre);
}
if(minutesre>=10&&minutesre<=60){
  lcd.setCursor(11,1);
  lcd.print(minutesre);
}
lcd.setCursor(1,1);
lcd.print(positionhorloge);
}

et qu'est ce qui fait ta base de temps?

pas de rtc?

3 boutons poussoirs et c'est tout ?

dfgh bonjour mes boutons me sert a règles l'heure et les minute ainsi que le réveil
(pardon mais je suis novice je ne comprends pas (pas de rtc?))

bonjour,
déjà ton tempsre est dans le setup au lieu de se trouver dans le loop

rtc arduino sur le net :wink:

je suppose que tu es sur UNO, donc pas d'horloge interne.
il te faut absolument une horloge externe
comme celle ci par exemple

sur GG lance une recherche "DS1307 arduino"et tu trouveras des tutos qui t'expliqueront la chose

quand je mais la tempsre dans loop sa fait pas se que je demande d allumer une led pendant 10 secondes puis l eteindre quand l heure du reveil est passe

merci donc l uno n a pas horloge interne pourtant quand j affiche l heure sur le lcd quand je l ai regle l heure est exacte
ps pardon j ecrit sans me relire

remycr:
quand je mais la tempsre dans loop sa fait pas se que je demande d allumer une led pendant 10 secondes puis l eteindre quand l heure du reveil est passe

il faut le mettre là ou il faut aussi :slight_smile:

un forum n'est pas un tchat, tu as le temps de te relire avant de poster