⭐⭐⭐ Wyzwanie
⏱️ 30 minut
Automatyczny szlaban
To sprytna wersja szlabanu! Czujnik odległości widzi, że zbliża się auto. Wtedy brzęczyk piszczy, a szlaban sam się otwiera. Auto odjechało? Wtedy znów się zamyka.
🧰 Czego potrzebujesz?
🔌
Kabel USB + Przewody połączeniowe🗺️ Schemat podłączenia
Poprowadź przewody od Arduino do każdej części. Kolory przewodów możesz wybrać samodzielnie.
| Od | Do |
|---|---|
Arduino UNO · D9 |
Czujnik odległości HC-SR04 · Trig |
Arduino UNO · D10 |
Czujnik odległości HC-SR04 · Echo |
Arduino UNO · 5V |
Czujnik odległości HC-SR04 · Vcc |
Arduino UNO · GND |
Czujnik odległości HC-SR04 · Gnd |
Arduino UNO · D5 |
Serwomotor SG90 · PWM |
Arduino UNO · 5V |
Serwomotor SG90 · VCC |
Arduino UNO · GND |
Serwomotor SG90 · GND |
Arduino UNO · D8 |
Aktywny buzzer · S |
Arduino UNO · 5V |
Aktywny buzzer · + |
Arduino UNO · GND |
Aktywny buzzer · - |
🛠️ Tak to zbudujesz
- Podłącz HC-SR04: Trig do pinu 9, Echo do pinu 10, Vcc do 5V i Gnd do GND.
- Podłącz servo: pomarańczowy do pinu 5, czerwony do 5V i brązowy do GND.
- Podłącz brzęczyk: S do pinu 8, + do 5V i − do GND.
- Przyklej słomkę albo patyczek po lodach do servo jako szlaban i ustaw czujnik przed nim.
💻 Kod
// Automatyczny szlaban
// Czy jedzie auto (coś bliżej niż 15 cm)? Wtedy brzęczyk piszczy i szlaban się otwiera.
#include <Servo.h>
const int TRIG_PIN = 9; // Trig z HC-SR04 na pinie 9
const int ECHO_PIN = 10; // Echo z HC-SR04 na pinie 10
const int SERVO_PIN = 5; // Pomarańczowy/żółty przewód servo na pinie 5
const int BRZECZYK_PIN = 8; // S brzęczyka na pinie 8
const int BLISKO = 15; // Od tej odległości (cm) szlaban się otwiera
const int ZAMKNIETE = 0; // Kąt, gdy szlaban jest zamknięty
const int OTWARTE = 90; // Kąt, gdy szlaban jest otwarty
Servo szlaban;
long zmierzOdleglosc() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long czas = pulseIn(ECHO_PIN, HIGH, 30000);
if (czas == 0) return 999;
return czas / 58;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BRZECZYK_PIN, OUTPUT);
szlaban.attach(SERVO_PIN);
szlaban.write(ZAMKNIETE);
}
void loop() {
long odleglosc = zmierzOdleglosc();
if (odleglosc < BLISKO) {
Serial.println(F("Auto! Szlaban otw."));
digitalWrite(BRZECZYK_PIN, HIGH); // Krótki pisk
delay(100);
digitalWrite(BRZECZYK_PIN, LOW);
szlaban.write(OTWARTE);
delay(1000);
// Zostaje otwarty, póki auto tam stoi
while (zmierzOdleglosc() < BLISKO) {
delay(200);
}
delay(2000); // Jeszcze chwilę czekamy, aż auto naprawdę odjedzie
szlaban.write(ZAMKNIETE);
Serial.println(F("Szlaban zamk."));
}
delay(100);
}
🧠 Co robi kod?
- HC-SR04 cały czas mierzy odległość. Bliżej niż 15 cm? To znaczy, że stoi tam auto.
- Brzęczyk krótko piszczy, a servo obraca się na 90 stopni: otwarte.
- Dopóki auto tam stoi, szlaban zostaje otwarty. Potem czekamy 2 sekundy i szlaban się zamyka.
🎯 Spróbuj…
- Policz, ile aut przejechało, i pokaż to w monitorze szeregowym
- Dodaj czerwoną i zieloną LED jako światła przy szlabanie
- Niech szlaban otwiera się tylko wtedy, gdy naciśniesz też przycisk
🚀 Zbuduj ten projekt z Codey: otwórz codey.online/pl/starter-kits/uno/projects/automatic-barrier i kliknij ZRÓB TO. Wtedy kod i schemat podłączenia będą od razu gotowe.
Codey Online to produkt od OTRONIC