#define PIN_BUTTON A1  
#define PIN_TRIG A3 //définit le nom symbolique pour la broche TRIG utilisée par le capteur à ultrasons. 
#define PIN_ECHO A2 //définiT le nom symbolique pour la broche ECHO utilisée par le capteur à ultrasons. 

void setup() {
  Serial.begin(115200);//: Initialise la communication série à un débit de 115200 bits par seconde. 
  pinMode(PIN_BUTTON, INPUT_PULLUP);// Configure la broche connectée au bouton en tant qu'entrée avec une résistance de tirage vers le haut.
  pinMode(PIN_TRIG, OUTPUT);// Configure la broche connectée à la broche de déclenchement du capteur à ultrasons en tant que sortie.
  pinMode(PIN_ECHO, INPUT);//Configure la broche connectée à la broche d'écho du capteur à ultrasons en tant qu'entrée.
}

void loop() {
  while (digitalRead(PIN_BUTTON) == HIGH) {
    delay(10);  
  }//Cette boucle attend que le bouton connecté à PIN_BUTTON soit pressé. Elle continue de boucler jusqu'à ce que le bouton soit pressé, vérifiant son état toutes les 10 millisecondes.

  // Start a new measurement:
  digitalWrite(PIN_TRIG, HIGH);//Définit la broche de déclenchement du capteur à ultrasons sur HIGH pour initier une mesure.
  delayMicroseconds(10);//Attend pendant 10 microsecondes.
  digitalWrite(PIN_TRIG, LOW);// Définit la broche de déclenchement du capteur à ultrasons sur LOW pour terminer l'impulsion de déclenchement.

  int duration = pulseIn(PIN_ECHO, HIGH);//Mesure la durée de l'impulsion d'écho (le temps nécessaire à l'onde sonore ultrasonore pour se rendre à un objet et revenir) et la stocke dans la variable duration.
  float distance = duration / 58.0;//Calcule la distance jusqu'à l'objet en centimètres en utilisant la formule : distance = durée / 58, où 58 est la vitesse du son en microsecondes par centimètre.
  Serial.print("Distance en cm: ");//Imprime la distance mesurée en centimètres sur le moniteur série à des fins de débogage.
  Serial.println(distance);
  
  while (digitalRead(PIN_BUTTON) == LOW) {
    delay(10); 
  }// Cette boucle attend que le bouton soit relâché avant de passer à la prochaine mesure.

  delay(100);//joute un petit délai avant de commencer la prochaine itération de la boucle. 
}
//conclusion: Le programme attend que le bouton-poussoir soit enfoncé.
// Lorsqu'il est enfoncé, il déclenche le capteur à ultrasons pour envoyer une impulsion 
//mesure le temps nécessaire pour que l'impulsion rebondisse sur un objet
// calcule la distance en fonction de ce temps 
//et affiche la distance sur le moniteur série. 
//Le programme attend ensuite que le bouton soit relâché avant de permettre une autre mesure.