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:
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();
}
