Ultrahangos távolságmérő rendszer
Arduino alapú mikrovezérlős projekt, amely ultrahang segítségével méri a távolságot és LED-ekkel + buzzerrel jelzi.
Projekt célja
A projekt célja egy egyszerű, de jól demonstrálható mikrovezérlős rendszer megvalósítása, amely képes a környezetében lévő tárgyak távolságának mérésére.
A rendszer ultrahangos szenzort használ, amely visszaverődő hanghullám alapján számolja ki a távolságot. Az Arduino feldolgozza az adatot, majd LED-ekkel és hangjelzéssel visszajelzést ad.
Felhasznált eszközök
Arduino Uno
A rendszer központi eleme, amely feldolgozza a szenzor jeleit és vezérli a kimeneteket.
HC-SR04 Ultrahangos szenzor
Ultrahang impulzust bocsát ki, majd méri a visszaérkezési időt. Ebből számolható a távolság.
LED-ek
A távolság vizuális jelzésére szolgálnak (zöld → sárga → piros).
Buzzer
Hangjelzést ad, ha a tárgy túl közel van.
Bekötés
- HC-SR04 VCC → 5V
- HC-SR04 GND → GND
- Trig → D9
- Echo → D10
- LED-ek → D2, D3, D4
- Buzzer → D5
Működés
A szenzor ultrahangot küld ki → visszaverődik → időt mérünk.
↓
Arduino kiszámolja a távolságot
↓
LED-ek jelzik a távolságot
↓
Buzzer figyelmeztet
Kód bemutatása
A program több logikai részre bontható: lábkiosztás, inicializálás, mérés és kiértékelés.
1. Lábkiosztás (Pin definíciók)
#define TRIG 9
#define ECHO 10
#define RED 2
#define YELLOW 3
#define GREEN 4
#define BUZZER 5
Meghatározzuk, hogy melyik alkatrész melyik Arduino lábra van kötve.
2. Változók
long duration;
int distance;
A duration a visszaérkező jel idejét tárolja, a distance pedig a számolt távolságot cm-ben.
3. Setup függvény
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(9600);
}
A setup egyszer fut le induláskor. Itt állítjuk be a bemeneteket és kimeneteket.
4. Ultrahangos mérés
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
distance = duration * 0.034 / 2;
A TRIG lábon egy impulzust küldünk ki, majd mérjük, mennyi idő alatt ér vissza. Ebből számoljuk ki a távolságot.
5. Soros monitor (debug)
Serial.print("Távolság: ");
Serial.print(distance);
Serial.println(" cm");
A mért adatokat kiírjuk a soros monitorra, így ellenőrizhető a működés.
6. Logika (LED + buzzer)
if (distance < 10) {
digitalWrite(RED, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
digitalWrite(BUZZER, HIGH);
}
else if (distance < 30) {
digitalWrite(RED, LOW);
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BUZZER, LOW);
}
else {
digitalWrite(RED, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(BUZZER, LOW);
}
A rendszer három állapotot kezel: közel (piros + hang), közepes (sárga), távol (zöld).
7. Ismétlés
delay(200);
A ciklus 200 ms-onként ismétlődik.
Eredmény
A rendszer valós időben méri a távolságot és vizuális + hang alapú visszajelzést ad.