Activation/désactivation d'une alarme en appuyant sur un bouton

Bonjour,
Je voudrais faire une alarme avec un détecteur à ultrason. (uniquement pour les vacances)
Dès que quelqu'un est détecté un buzzer s'active. Un bouton permet de désactiver l'alarme après qu'elle se soit déclanchée pendant 30 minutes (que j'ai simplifié à 10 secondes ici).

Le code est compilé mais ce que je veux faire ne marche pas.
Pourriez-vous m'aider ?
Le problème est dans le code.

#define trigPin 2
#define echoPin 3
// Define variables:
long duration;
int distance;

int bouton = 0;
void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  Serial.begin(9600);
}
void loop() {
 
  
  
  
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  duration = pulseIn(echoPin, HIGH);
  // Calculate the distance:
  distance= duration*0.034/2;
  Serial.print("Distance = ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(50);
  if (distance < 20) {       //je mettrai à 400 cm mais là j'ai simplifié
    digitalWrite(13, HIGH);//ceci doit mettre en marche un buzzer
  }
  else {
    digitalWrite(13, LOW);
  }
  bouton = digitalRead(4);
  if (bouton == LOW); {
    digitalWrite(13, LOW);
    delay(10000); //j'aurais aimé que ceci suspende l'alarme pendant dix secondes
  }
  
}

C’est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)

Au lieu de poster une seconde fois le même sujet, lis les réponses à ton premier post