Ultrazvukovy senzor HC-SR04 - manual

Zo stránky 3D liga wiki
Prejsť na navigáciu Prejsť na vyhľadávanie

Ultrazvukový senzor

Späť k zoznamu

Dostali ste ultrazvukový senzor HC-SR04. Pred dvoma úlohami sme sa naučili ako generovať zvuk rýchlym zapínaním a vypínaním bzučiaka. Teraz použijeme rovnaký princíp – ale na iný účel: meranie vzdialenosti.

Senzor HC-SR04 má na sebe zabudovaný reproduktor aj mikrofón:

  • Reproduktor vyšle krátky ultrazvukový impulz cez pin TRIG
  • Impulz sa odrazí od objektu pred senzorom a vráti sa späť
  • Mikrofón zachytí odrazený signál a vyšle ho cez pin ECHO

Celý tento proces trvá nejaký čas – a práve z tohto času vieme vypočítať vzdialenosť.


Pozor – nie každý objekt odrazí ultrazvuk spoľahlivo. Mäkké a porézne materiály (napr. látka, molitan) zvuk pohlcujú namiesto odrazu, a senzor ich nemusí detekovať.

Zapojenie

Pin senzora Pin na RP2350-Zero
VCC 5V
GND GND
TRIG GP6
ECHO GP7

Kód – meranie času impulzu

Vyskúšaj toto: Skopíruj a spusti nasledujúci program. Otvor sériový monitor (9600 baud) a pohybuj rukou pred senzorom. Sleduj ako sa mení nameraná vzdialenosť.

const int TRIG = 6;
const int ECHO = 7;

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  Serial.begin(9600);
}

// Funkcia odošle impulz a vráti nameraný čas v mikrosekundách
long measurePulse() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  return pulseIn(ECHO, HIGH);
}

void loop() {
  long trvanie = measurePulse();

  Serial.print("Čas: ");
  Serial.print(trvanie);

  delay(100);
}

Princíp

Novinka Vysvetlenie
pulseIn(pin, HIGH) Čaká kým pin prejde do stavu HIGH, potom meria ako dlho v ňom zostane. Vráti čas v mikrosekundách.
digitalWrite(TRIG, HIGH) + delayMicroseconds(10) Odošleme presne 10µs impulz – to je požiadavka senzora HC-SR04 na spustenie merania.
trvanie * 0.0343 / 2.0 Prepočet: čas (µs) × rýchlosť zvuku (cm/µs) ÷ 2 (tam aj späť) = vzdialenosť v cm.
float Dátový typ pre desatinné čísla – na rozdiel od int, ktorý uchováva iba celé čísla.

Čo sme sa naučili?

  • Ultrazvukový senzor HC-SR04 meria vzdialenosť pomocou odrazu zvuku – princíp podobný netopierom alebo parkovacím senzorom áut.
  • Funkcia pulseIn() meria čas trvania signálu na pine v mikrosekundách.
  • Dátový typ float používame vtedy, keď potrebujeme pracovať s desatinnými číslami.
  • Nie každý materiál odráža ultrazvuk rovnako – mäkké povrchy ho môžu pohltiť.