Fonctionnement et programmation des composants
Fonctionnement et programmation des composants
1. Introduction à l'Arduino Nano
Qu'est-ce que l'Arduino ?
https://innovation.iha.unistra.fr/books/robotique-educative/page/quest-ce-que-larduino
2. Fonctionnement et programmation d'un servomoteur RC 360°
Comment fonctionne le servomoteur RC 360° ? Consulter cette page.
Ensuite, consultez cette page pour apprendre à programmer le servomoteur RC 360°.
3. Capteur à ultrasons HC-SR04
Comment fonctionne le capteur à ultrasons ? Consulter cette page
https://innovation.iha.unistra.fr/books/robotique-educative/page/quest-ce-quun-capteur-a-ultrasons
4. Programmation d'un capteur à ultrasons HC-SR04 avec un servomoteur RC 360°
Vous avez vu comment programmer un servomoteur RC 360° et un capteur ultrasons individuellement. Maintenant, vous apprendrez à les utiliser en même temps. (voir partie "Programmation sur Mblock"
Programmation sur Mblock
Exercice 1 : Changer d'angle d'un servomoteur 180 grâce au capteur ultrasons
Consigne :
Programmez votre carte Arduino pour que le servomoteur réagisse en fonction de la distance mesurée par le capteur à ultrasons :
-
Si la distance mesurée est supérieure à 10 cm, le servomoteur doit se positionner à 180°.
-
Si la distance mesurée est inférieure ou égale à 10 cm, le servomoteur doit se positionner à 0°.
Correction :
Exercice 2 : Changer le sens d'un servomoteur 360 grâce au capteur ultrasons
Consigne :
Programmez votre carte Arduino pour que le servomoteur réagisse en fonction de la distance mesurée par le capteur à ultrasons :
-
Si la distance mesurée est supérieure à 10 cm, le servomoteur doit tourner dans un sens à la vitesse maximale.
-
Si la distance mesurée est inférieure ou égale à 10 cm, le servomoteur tourner dans l'autre sens à la vitesse maximale.
Correction :
Programmation sur Arduino IDE
Exercice 1 : Changer d'angle d'un servomoteur 180 grâce au capteur ultrasons
Consigne :
Programmez votre carte Arduino pour que le servomoteur réagisse en fonction de la distance mesurée par le capteur à ultrasons :
-
Si la distance mesurée est supérieure à 10 cm, le servomoteur doit se positionner à 180°.
-
Si la distance mesurée est inférieure ou égale à 10 cm, le servomoteur doit se positionner à 0°.
Correction :
#include <Servo.h>
// Définir les broches du capteur HC-SR04
const int trigPin = 2;
const int echoPin = 3;
// Définir la broche du servomoteur
const int servoPin = 9;
Servo monServo;
void setup() {
Serial.begin(9600); // Initialisation du moniteur série
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
monServo.attach(servoPin); // Attache le servomoteur à la broche 6
}
void loop() {
// Mesure de la distance
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duree = pulseIn(echoPin, HIGH);
float distance = duree * 0.034 / 2; // Conversion en centimètres
Serial.print("Distance : ");
Serial.print(distance);
Serial.println(" cm");
// Contrôle du servomoteur
if (distance > 10) {
monServo.write(180);
} else {
monServo.write(0);
}
delay(200); // Petite pause pour éviter les mesures trop rapides
}
Exercice 2 : Changer le sens d'un servomoteur 360 grâce au capteur ultrasons
Consigne :
Programmez votre carte Arduino pour que le servomoteur réagisse en fonction de la distance mesurée par le capteur à ultrasons :
-
Si la distance mesurée est supérieure à 10 cm, le servomoteur doit tourner dans un sens à la vitesse maximale.
-
Si la distance mesurée est inférieure ou égale à 10 cm, le servomoteur tourner dans l'autre sens à la vitesse maximale.
Correction :
#include <Servo.h>
// Définir les broches du capteur HC-SR04
const int trigPin = 9;
const int echoPin = 10;
// Définir la broche du servomoteur
const int servoPin = 6;
Servo monServo;
void setup() {
Serial.begin(9600); // Initialisation du moniteur série
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
monServo.attach(servoPin); // Attache le servomoteur à la broche 6
}
void loop() {
// Mesure de la distance
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duree = pulseIn(echoPin, HIGH);
float distance = duree * 0.034 / 2; // Conversion en centimètres
Serial.print("Distance : ");
Serial.print(distance);
Serial.println(" cm");
// Contrôle du servomoteur
if (distance > 10) {
monServo.writeMicroseconds(2000);
} else {
monServo.writeMicroseconds(1000);
}
delay(200); // Petite pause pour éviter les mesures trop rapides
}