Mesure de distance par ultrason

j'écris en ce moments un programme conçu pour utiliser deux capteurs à ultrasons HC-SR04 connectés à une carte Arduino. Les capteurs à ultrasons sont utilisés pour mesurer la distance entre le capteur et un objet en émettant des ondes sonores et en mesurant le temps qu'elles prennent pour rebondir sur l'objet et revenir au capteur.
Je ne suis pas encor au lycée et je n'ai personne pour m'aider a coder, le programme ne fonctionne pas pourriez vous m'aider s'il vous plait?

#include <Arduino.h>

// Définir les broches pour le premier capteur
const int trigPin1 = 2;
const int echoPin1 = 3;

// Définir les broches pour le deuxième capteur
const int trigPin2 = 4; // ERREUR : Utilisation d'une broche réservée
const int echoPin2 = 5;

void setup() {
  // Initialiser les broches en tant que sortie ou entrée
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);

  // Démarrer la communication série
  Serial.begin(9600);
}

void loop() {
  // Mesurer la distance avec le premier capteur
  float distance1 = measureDistance(trigPin1, echoPin1); // ERREUR : Fonction non déclarée

  // Mesurer la distance avec le deuxième capteur
  float distance2 = measureDistance(trigPin2, echoPin2);

  // Afficher les distances mesurées
  Serial.print("Distance 1: ");
  Serial.print(distance1);
  Serial.print(" cm");

  Serial.print("Distance 2: ");
  Serial.print(distance2);
  Serial.print(" cm");

  delay(1000);
}

float measureDistance(int trigPin, int echoPin) {
  // Envoyer une impulsion ultrasonore
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

Bonjour et bienvenue,

Fil de discussion créé au mauvais endroit.
Message déplacé dans la racine du forum francophone.

Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.

Le plus simple c'est d'indiquer le problème que tu rencontres.

le code est incomplet.

donnez plus d'infos

il me semble qu'il y ai une erreur de déclaration de fonction

voici une version plus complète a laquelle j'ai rajouter des information et ou j'ai corrigé toutes les erreurs que j'ai put trouver

#include <Arduino.h>

// Définir les broches pour le premier capteur
const int trigPin1 = 2; // Broche de déclenchement du premier capteur ultrasonique
const int echoPin1 = 3; // Broche de réception du premier capteur ultrasonique

// Définir les broches pour le deuxième capteur
const int trigPin2 = 6; // Changer la broche à une non réservée
const int echoPin2 = 5; // Broche de réception du deuxième capteur ultrasonique

// Prototype de fonction pour mesurer la distance avec un capteur ultrasonique
float measureDistance(int trigPin, int echoPin);

void setup() {
  // Initialiser les broches en tant que sortie ou entrée
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);

  // Démarrer la communication série à une vitesse de 9600 bauds
  Serial.begin(9600);

  // Afficher des informations de démarrage sur le moniteur série
  Serial.println("Programme de mesure de distance avec deux capteurs ultrasoniques");
  Serial.println("===============================================");
  Serial.println("Attente de l'initialisation des capteurs...");
  Serial.println("===============================================");
  Serial.println();
}

void loop() {
  // Mesurer la distance avec le premier capteur
  float distance1 = measureDistance(trigPin1, echoPin1);

  // Mesurer la distance avec le deuxième capteur
  float distance2 = measureDistance(trigPin2, echoPin2);

  // Afficher les distances mesurées sur le moniteur série
  Serial.println("Distances mesurées:");
  Serial.print("Capteur 1: ");
  Serial.print(distance1);
  Serial.println(" cm");
  Serial.print("Capteur 2: ");
  Serial.print(distance2);
  Serial.println(" cm");
  Serial.println();

  // Attendre 1 seconde avant la prochaine mesure
  delay(1000);
}

// Fonction pour mesurer la distance avec un capteur ultrasonique
float measureDistance(int trigPin, int echoPin) {
  // Envoyer une impulsion ultrasonore
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Mesurer le temps écoulé pour le retour du signal ultrasonore
  unsigned long duration = pulseIn(echoPin, HIGH);
  
  // Calculer la distance en cm
  float distance = (duration * 0.034) / 2;
  
  return distance;
}

Et quel est le souci?

Comment sont positionnés vos capteurs ? Il faut attendre la dissipation du premier ping avant de déclencher le second s’il peut y avoir recouvrement

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.