Senzor HC-SR04 je ultrazvukový merač vzdialenosti z rozsahom 2cm - 400cm. Presnosť senzora jje až 3mm.
Základné princípy:
1. Odoslanie signálu trvajúceho aspoň 10us do triggera .
2. Modul odošle osem 40kHz signálov.
3. Prostredníctvom vysokej úrovne zaznamenáva arduino dobu trvania signálu z echo.
4. Pomocou vzorca arduino vypočíta vzdialenosť.
Program:
int trig=8; //vstup trig pripojíme na pin 13
int echo=9; //vstup echo pripojíme na pin 13
void setup() {
Serial.begin (9600); //nastavenie rýchlosti komunikácie na seriovom porte
pinMode(trig, OUTPUT); //pin 8 je nastavený ako výstup
pinMode(echo, INPUT); //pin 9 je nastavený ako vstup
}
void loop() {
long cas; //deklaracia premennej na zaznamenanie dlzky impulzu echo
long vzdialenost; //deklaracia premennej na zaznamenanie vzdialenosti
digitalWrite(trig, LOW);
delayMicroseconds(5);
digitalWrite(trig, HIGH);
delayMicroseconds(10); // Spúštací signál senzoru je 10uS
digitalWrite(trig, LOW);
cas = pulseIn(echo, HIGH); //specialna funkcia na zaznamenanie trvania impulzu (VIĎ NIŽŠIE)
vzdialenost = (cas/58); //výpočet vzdialenosti podľa vzorca z datasheetu
if (vzdialenost >= 200 || vzdialenost <= 0){ //zadajú sa rozmery akvária
Serial.println("Mimo rozsahu!");
}
else { //výpis vzdialenosti
Serial.print("Vzdialenost: ");
Serial.print(vzdialenost);
Serial.println(" cm");
}
delay(100);
}
Funkcia pulseIn():
Táto funkcia slúži na čítanie pulzov (HIGH alebo LOW). Napríklad, ak hodnota ktorú chceme čítať je HIGH impulz, čaká na, pulseIN() čaká na impulz HIGH ktorý spustí časovanie. Pulzom LOW zastaví časovanie a vráti dľžku pulzu v mikrosekundách.
Video k programu:
Zdroj: Datasheet
Žiadne komentáre:
Zverejnenie komentára