⭐⭐⭐ Uitdaging
⏱️ 30 minuten
Automatische slagboom
De slimme versie van de slagboom! De afstandssensor ziet dat er een auto aankomt. Dan piept de zoemer en gaat de slagboom vanzelf open. Is de auto weg? Dan gaat hij weer dicht.
🧰 Wat heb je nodig?
🔌
USB-kabel + Jumperkabels🗺️ Aansluitschema
Volg de draden van de Arduino naar elk onderdeel. De kleuren van de draden mag je zelf kiezen.
| Van | Naar |
|---|---|
Arduino UNO · D9 |
Afstandssensor HC-SR04 · Trig |
Arduino UNO · D10 |
Afstandssensor HC-SR04 · Echo |
Arduino UNO · 5V |
Afstandssensor HC-SR04 · Vcc |
Arduino UNO · GND |
Afstandssensor HC-SR04 · Gnd |
Arduino UNO · D5 |
Servomotor SG90 · PWM |
Arduino UNO · 5V |
Servomotor SG90 · VCC |
Arduino UNO · GND |
Servomotor SG90 · GND |
Arduino UNO · D8 |
Actieve zoemer · S |
Arduino UNO · 5V |
Actieve zoemer · + |
Arduino UNO · GND |
Actieve zoemer · - |
🛠️ Zo bouw je het
- Sluit de HC-SR04 aan: Trig naar pin 9, Echo naar pin 10, Vcc naar 5V en Gnd naar GND.
- Sluit de servo aan: oranje naar pin 5, rood naar 5V en bruin naar GND.
- Sluit de zoemer aan: S naar pin 8, + naar 5V en − naar GND.
- Plak een rietje of ijsstokje op de servo als slagboom en zet de sensor ervoor.
💻 De code
// Automatische slagboom
// Komt er een auto aan (iets dichter dan 15 cm)? Dan piept de zoemer en gaat de slagboom open.
#include <Servo.h>
const int TRIG_PIN = 9; // Trig van de HC-SR04 op pin 9
const int ECHO_PIN = 10; // Echo van de HC-SR04 op pin 10
const int SERVO_PIN = 5; // Oranje/gele draad van de servo op pin 5
const int ZOEMER_PIN = 8; // S van de zoemer op pin 8
const int DICHTBIJ = 15; // Vanaf deze afstand (cm) gaat de slagboom open
const int DICHT = 0; // Hoek als de slagboom dicht is
const int OPEN = 90; // Hoek als de slagboom open is
Servo slagboom;
long meetAfstand() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long tijd = pulseIn(ECHO_PIN, HIGH, 30000);
if (tijd == 0) return 999;
return tijd / 58;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(ZOEMER_PIN, OUTPUT);
slagboom.attach(SERVO_PIN);
slagboom.write(DICHT);
}
void loop() {
long afstand = meetAfstand();
if (afstand < DICHTBIJ) {
Serial.println(F("Auto gezien! Slagboom open."));
digitalWrite(ZOEMER_PIN, HIGH); // Kort piepje
delay(100);
digitalWrite(ZOEMER_PIN, LOW);
slagboom.write(OPEN);
delay(1000);
// Open blijven zolang de auto er nog staat
while (meetAfstand() < DICHTBIJ) {
delay(200);
}
delay(2000); // Nog even wachten tot de auto echt weg is
slagboom.write(DICHT);
Serial.println(F("Slagboom dicht."));
}
delay(100);
}
🧠 Wat doet de code?
- De HC-SR04 meet steeds de afstand. Dichter dan 15 cm? Dan staat er een auto.
- De zoemer piept kort en de servo draait naar 90 graden: open.
- Zolang de auto er staat, blijft de slagboom open. Daarna wachten we 2 seconden en gaat hij dicht.
🎯 Probeer eens…
- Tel hoeveel auto's er langs zijn gekomen en laat het zien in de seriële monitor
- Voeg een rode en een groene LED toe als stoplicht bij de slagboom
- Laat de slagboom alleen opengaan als er ook op een knop wordt gedrukt
🚀 Bouw dit project met Codey: open codey.online/nl/starter-kits/uno/projects/automatic-barrier en klik op MAAK DIT. Dan staan de code en het aansluitschema meteen klaar.
Codey Online is een product van OTRONIC