Sortir d'une boucle for grâce à un BP

Bonjour, j’ai besoin de votre aide car dans un programme j’ai un signal d’alarme qui tourne en continu en appuyant sur un BP ce qui déclenche une boucle for. Cependant j’aimerais comprendre comment en appuyant sur un autre bouton je peux arrêter cette boucle for voilà mon code et merci de votre aide;

#define ECHOPIN 7                            
#define TRIGPIN 8                         
#define LEDPIN 13
#define BUZZPIN 9
#define BPALERT 5
#define BPACQ 11
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
void setup(){
  Serial.begin(9600);
  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  pinMode(LEDPIN, OUTPUT);
  pinMode(BUZZPIN, OUTPUT);
  pinMode(BPALERT, INPUT_PULLUP);
  pinMode(BPACQ, INPUT_PULLUP);
  lcd.begin(16, 2);
}

void loop(){
  digitalWrite(TRIGPIN, LOW);                   
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                  
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                   
  int distance = pulseIn(ECHOPIN, HIGH);      
  distance= distance/58;                      
  Serial.println(distance);                     
  delay(500);
  digitalWrite(LEDPIN, LOW);
  digitalWrite(BUZZPIN, LOW);
  boolean etatBouton = digitalRead(BPALERT);
  boolean etatBoutons = digitalRead(BPACQ);
    lcd.clear();
      lcd.home(); // Replace le curseur en haut à gauche
      char message[16] = "";
      sprintf(message, " Dist : %4d cm", distance);
      lcd.print(message);
      lcd.setCursor(0,1);
  if (distance >45)
  {
   digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  tone(9,500);
  delay(500);
  tone(9,1000);
  }
 else if (etatBouton == 0)
{
  for (int i = 0; i<1000; i++)
  {
    digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  tone(9,500);
  delay(500);
  tone(9,1000);
  if (etatBoutons ==0)
  {
    break;
  }
}
}
 else 
{
  noTone(9);
  digitalWrite(13, LOW);


}
}

Bonjour,

Il faut que tu relises ton entrée avant de la tester

 etatBoutons = digitalRead(BPACQ);
 if (etatBoutons ==0)
 {
   break;
 }

Donc je dois rajouter la ligne etatBoutons = digitalRead(BPACQ); avant le if c'est bien cela ?

oui

Je viens d'essayer d'essayer cette méthode mais elle ne fonctionne pas il n'y aurait pas d'autres idées par hasard ?

Bien sur que ça fonctionne, mais avec tous les delay que tu as dans ton programme, il doit falloir appuyer longtemps pour que ce soit pris en compte.