Bonjour! Dans cette vidéo je vais vous montrer comment utiliser un capteur de distance à ultrason avec un Arduino. Le capteur est installé sur un servomoteur, alors je vais aussi vous apprendre à utiliser un servomoteur. J’espère que vous aimerez la vidéo 😀

Ma playlist de vidéos Arduino: https://www.youtube.com/playlist?list=PL5h7NsxkT9YNiPHjexrj3NEB4Hb8Mhouj

Procurez vous le robot ici:

http://bit.ly/2sVMS5A

Vérifiez vos branchements ici:

https://TommyDesrochers.com/review-kit-robot-multifonctions-pour-arduino/

Programme créé dans la vidéo:

#include <Servo.h>

const int echoPin = 13;
const int triggerPin = 12;

int distanceAvant;
int distanceDroite;
int distanceGauche;
float intervalle;

Servo myservo; //Création de l'objet servo
const int delay_time = 250; //Temps accordé au servo pour la mesure de la distance de chaque côté

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(echoPin, INPUT);
  pinMode(triggerPin, OUTPUT);
  myservo.attach(9); //Associe l'objet myservo à la pin 9 (PWM)
}

void mesurerDistanceAvant()
{
  myservo.write(90);
  delay(delay_time);
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH); //Envoie d'une onde sonore
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  intervalle = pulseIn(echoPin, HIGH); //Réception de l'écho
  intervalle = intervalle/5.8/10; //Conversion de la différence de temps entre l'envoie de l'onde sonore et la réception de l'écho en distance (cm)
  Serial.println("Distance avant:");
  Serial.println(intervalle);
  distanceAvant = intervalle; //Arrondissement de la distance
}

void mesurerDistanceGauche()
{
  myservo.write(180);
  delay(delay_time);
  digitalWrite(triggerPin, LOW);
  delayMicroseconds( 2);
  digitalWrite(triggerPin, HIGH); //Envoie d'une onde sonore
  delayMicroseconds( 10);
  digitalWrite(triggerPin, LOW);
  intervalle = pulseIn(echoPin, HIGH); //Réception de l'écho
  intervalle = intervalle/5.8/10; //Conversion de la différence de temps entre l'envoie de l'onde sonore et la réception de l'écho en distance (cm)
  Serial.println("Distance gauche:");
  Serial.println(intervalle);
  distanceGauche = intervalle;
}

void mesurerDistanceDroite()
{
  myservo.write(0);
  delay(delay_time);
  digitalWrite(triggerPin, LOW);
  delayMicroseconds( 2);
  digitalWrite(triggerPin, HIGH); //Envoie d'une onde sonore
  delayMicroseconds( 10);
  digitalWrite(triggerPin, LOW);
  intervalle = pulseIn(echoPin, HIGH); //Réception de l'écho
  intervalle = intervalle/5.8/10; //Conversion de la différence de temps entre l'envoie de l'onde sonore et la réception de l'écho en distance (cm)
  Serial.println("Distance droite:");
  Serial.println(intervalle);
  distanceDroite = intervalle;
}

void modeUltrason()
{
  mesurerDistanceAvant();
  delay(delay_time);
  
  if(distanceAvant < 25) //Si la distance avant est de moins de 25cm
  {
    Serial.println("Obstacle à l'avant");
    Serial.println();
    mesurerDistanceGauche();
    delay(delay_time);
    mesurerDistanceDroite();
    delay(delay_time);
    
    if(distanceGauche < 15 && distanceDroite < 15) //Si la distance à gauche et la distance à droite sont de moins de 15cm
    {
      Serial.println("Obstacles à gauche et à droite, reculer");
      Serial.println();
    }
    else if(distanceGauche > distanceDroite) //Si la distance gauche est plus grande que la distance droite
    {
      Serial.println("Obstacle à droite, tourner à gauche");
      Serial.println();
    }
    else if(distanceGauche <= distanceDroite) //Si la distance gauche est plus petite ou égale à la distance droite
    {
      Serial.println("Obstacle à gauche, tourner à droite");
      Serial.println();
    }
  }
  else //Si la distance avant est de plus de 25cm
  {
    Serial.println("Aucun obstacle, continuer tout droit");
    Serial.println();
  }
}

void loop() {
  // put your main code here, to run repeatedly:
  modeUltrason();
}