⭐⭐⭐ Herausforderung
⏱️ 30 Minuten
Automatische Schranke
Die schlaue Version der Schranke! Der Abstandssensor sieht, dass ein Auto kommt. Dann piept der Summer und die Schranke öffnet sich von selbst. Ist das Auto weg? Dann geht sie wieder zu.
🧰 Was brauchst du?
🔌
USB-Kabel + Jumperkabel🗺️ Schaltplan
Folge den Drähten vom Arduino zu jedem Teil. Die Farben der Drähte darfst du selbst wählen.
| Von | Nach |
|---|---|
Arduino UNO · D9 |
Abstandssensor HC-SR04 · Trig |
Arduino UNO · D10 |
Abstandssensor HC-SR04 · Echo |
Arduino UNO · 5V |
Abstandssensor HC-SR04 · Vcc |
Arduino UNO · GND |
Abstandssensor HC-SR04 · Gnd |
Arduino UNO · D5 |
Servomotor SG90 · PWM |
Arduino UNO · 5V |
Servomotor SG90 · VCC |
Arduino UNO · GND |
Servomotor SG90 · GND |
Arduino UNO · D8 |
Aktiver Summer · S |
Arduino UNO · 5V |
Aktiver Summer · + |
Arduino UNO · GND |
Aktiver Summer · - |
🛠️ So baust du es
- Schließe den HC-SR04 an: Trig an Pin 9, Echo an Pin 10, Vcc an 5V und Gnd an GND.
- Schließe den Servo an: Orange an Pin 5, Rot an 5V und Braun an GND.
- Schließe den Summer an: S an Pin 8, + an 5V und − an GND.
- Klebe einen Strohhalm oder Eisstiel als Schranke auf den Servo und stelle den Sensor davor.
💻 Der Code
// Automatische Schranke
// Kommt ein Auto (etwas näher als 15 cm)? Dann piept der Summer und die Schranke geht auf.
#include <Servo.h>
const int TRIG_PIN = 9; // Trig des HC-SR04 an Pin 9
const int ECHO_PIN = 10; // Echo des HC-SR04 an Pin 10
const int SERVO_PIN = 5; // Orange/gelbe Leitung des Servos an Pin 5
const int SUMMER_PIN = 8; // S des Summers an Pin 8
const int NAH_DRAN = 15; // Ab diesem Abstand (cm) geht die Schranke auf
const int ZU = 0; // Winkel, wenn die Schranke zu ist
const int OFFEN = 90; // Winkel, wenn die Schranke offen ist
Servo schranke;
long missAbstand() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long zeit = pulseIn(ECHO_PIN, HIGH, 30000);
if (zeit == 0) return 999;
return zeit / 58;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(SUMMER_PIN, OUTPUT);
schranke.attach(SERVO_PIN);
schranke.write(ZU);
}
void loop() {
long abstand = missAbstand();
if (abstand < NAH_DRAN) {
Serial.println(F("Auto gesehen! Schranke auf."));
digitalWrite(SUMMER_PIN, HIGH); // Kurzer Piepton
delay(100);
digitalWrite(SUMMER_PIN, LOW);
schranke.write(OFFEN);
delay(1000);
// Offen bleiben, solange das Auto noch da ist
while (missAbstand() < NAH_DRAN) {
delay(200);
}
delay(2000); // Noch kurz warten, bis das Auto wirklich weg ist
schranke.write(ZU);
Serial.println(F("Schranke zu."));
}
delay(100);
}
🧠 Was macht der Code?
- Der HC-SR04 misst immer wieder den Abstand. Näher als 15 cm? Dann steht dort ein Auto.
- Der Summer piept kurz und der Servo dreht auf 90 Grad: offen.
- Solange das Auto dort steht, bleibt die Schranke offen. Danach warten wir 2 Sekunden und sie geht zu.
🎯 Probier mal …
- Zähle, wie viele Autos vorbeigekommen sind, und zeige es im seriellen Monitor
- Füge eine rote und eine grüne LED als Ampel bei der Schranke hinzu
- Lass die Schranke nur aufgehen, wenn auch ein Knopf gedrückt wird
🚀 Baue dieses Projekt mit Codey: Öffne codey.online/de/starter-kits/uno/projects/automatic-barrier und klicke auf BAU DAS. Dann sind der Code und der Schaltplan sofort bereit.
Codey Online ist ein Produkt von OTRONIC