⭐⭐⭐ Défi
⏱️ 30 minutes
Barrière automatique
Voici la version maligne de la barrière ! Le capteur de distance voit qu’une voiture arrive. Alors le buzzer fait bip et la barrière s’ouvre toute seule. La voiture est partie ? Alors elle se referme.
🧰 De quoi as-tu besoin ?
🔌
Câble USB + Câbles jumper🗺️ Schéma de branchement
Suis les fils de l’Arduino vers chaque pièce. Tu peux choisir toi-même les couleurs des fils.
| De | Vers |
|---|---|
Arduino UNO · D9 |
Capteur de distance HC-SR04 · Trig |
Arduino UNO · D10 |
Capteur de distance HC-SR04 · Echo |
Arduino UNO · 5V |
Capteur de distance HC-SR04 · Vcc |
Arduino UNO · GND |
Capteur de distance HC-SR04 · Gnd |
Arduino UNO · D5 |
Servomoteur SG90 · PWM |
Arduino UNO · 5V |
Servomoteur SG90 · VCC |
Arduino UNO · GND |
Servomoteur SG90 · GND |
Arduino UNO · D8 |
Buzzer actif · S |
Arduino UNO · 5V |
Buzzer actif · + |
Arduino UNO · GND |
Buzzer actif · - |
🛠️ Voici comment le construire
- Branche le HC-SR04 : Trig vers la broche 9, Echo vers la broche 10, VCC vers 5V et GND vers GND.
- Branche le servo : orange vers la broche 5, rouge vers 5V et marron vers GND.
- Branche le buzzer : S vers la broche 8, + vers 5V et − vers GND.
- Colle une paille ou un bâtonnet de glace sur le servo comme barrière et place le capteur devant.
💻 Le code
// Barriere automatique
// Une voiture arrive (quelque chose a moins de 15 cm) ? Alors le buzzer fait bip et la barriere s'ouvre.
#include <Servo.h>
const int TRIG_PIN = 9; // Trig du HC-SR04 sur la broche 9
const int ECHO_PIN = 10; // Echo du HC-SR04 sur la broche 10
const int SERVO_PIN = 5; // Fil orange/jaune du servo sur la broche 5
const int BUZZER_PIN = 8; // S du buzzer sur la broche 8
const int PROCHE = 15; // A partir de cette distance (cm), la barriere s'ouvre
const int FERME = 0; // Angle quand la barriere est fermee
const int OUVERT = 90; // Angle quand la barriere est ouverte
Servo barriere;
long mesurerDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long temps = pulseIn(ECHO_PIN, HIGH, 30000);
if (temps == 0) return 999;
return temps / 58;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
barriere.attach(SERVO_PIN);
barriere.write(FERME);
}
void loop() {
long distance = mesurerDistance();
if (distance < PROCHE) {
Serial.println(F("Voiture vue ! Barriere ouverte."));
digitalWrite(BUZZER_PIN, HIGH); // Petit bip
delay(100);
digitalWrite(BUZZER_PIN, LOW);
barriere.write(OUVERT);
delay(1000);
// Rester ouvert tant que la voiture est encore la
while (mesurerDistance() < PROCHE) {
delay(200);
}
delay(2000); // Attendre encore un peu que la voiture soit bien partie
barriere.write(FERME);
Serial.println(F("Barriere fermee."));
}
delay(100);
}
🧠 Que fait le code ?
- Le HC-SR04 mesure sans arrêt la distance. Moins de 15 cm ? Alors il y a une voiture.
- Le buzzer fait un petit bip et le servo tourne à 90 degrés : ouvert.
- Tant que la voiture est là, la barrière reste ouverte. Après, on attend 2 secondes et elle se ferme.
🎯 Essaie un peu…
- Compte combien de voitures sont passées et montre-le dans le moniteur série
- Ajoute une LED rouge et une LED verte comme feu près de la barrière
- Fais ouvrir la barrière seulement si on appuie aussi sur un bouton
🚀 Construis ce projet avec Codey : ouvre codey.online/fr/starter-kits/uno/projects/automatic-barrier et clique sur FAIS ÇA. Alors le code et le schéma de branchement sont tout de suite prêts.
Codey Online est un produit de OTRONIC