Ultrazvukovy senzor HC-SR04 - manual: Rozdiel medzi revíziami

Zo stránky 3D liga wiki
Prejsť na navigáciu Prejsť na vyhľadávanie
Sebastian (diskusia | príspevky)
Sebastian (diskusia | príspevky)
dBez shrnutí editace
 
(3 medziľahlé úpravy od 2 ďalších používateľov nie sú zobrazené)
Riadok 1: Riadok 1:
[[Electronics | Späť do zoznamu]] | [[HC-SR04 - setup|HW príprava senzora HC-SR04]]
=== Ultrazvukový senzor ===
=== Ultrazvukový senzor ===


[[Príprava elektroniky - hardware setup | Späť k zoznamu]]
Ultrazvukový senzor '''HC-SR04''' sa v niečom podobá na pasívnu sirénku, pomocou ktorej sa dá generovať zvuk rýchlym zapínaním a vypínaním bzučiaka. Teraz použijeme podobný princíp – ale na iný účel: '''meranie vzdialenosti'''.
 
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:
Senzor HC-SR04 má na sebe zabudovaný reproduktor aj mikrofón:
Riadok 83: Riadok 83:
| <code>float</code> || Dátový typ pre desatinné čísla – na rozdiel od <code>int</code>, ktorý uchováva iba celé čísla.
| <code>float</code> || Dátový typ pre desatinné čísla – na rozdiel od <code>int</code>, 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 <code>pulseIn()</code> meria čas trvania signálu na pine v mikrosekundách.
* Dátový typ <code>float</code> 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ť.
<!-- ''' Vaša úloha – Parkovací senzor '''
<span style="background:#FFFFA0">'''VAŠA ÚLOHA:'''</span> Zapojte k ultrazvukovému senzoru bzučiak a RGB LED. Napíšte program, ktorý bude fungovať ako '''parkovací senzor''':
* Čím je objekt '''bližšie''', tým '''rýchlejšie''' bliká LED a pípá bzučiak
* Na základe vzdialenosti meňte aj '''farbu''' LED:
Vzorová štruktúra programu:
[[Ultrasonic sensor structure | Štruktúra]]
<span style="background:#FF9900">'''Bonus:'''</span>
Skúste sa zamyslieť nad tým ako by sme mohli ošetriť situáciu, kedy by signál nepriśiel naspäť. Buť je objekt ďaleko alebo sa zvuk pohltí. Senzor vie nasnímať maximálne do 200cm. Skúste si to prepočítať.
-->

Aktuálna revízia z 18:25, 8. september 2026

Späť do zoznamu | HW príprava senzora HC-SR04

Ultrazvukový senzor

Ultrazvukový senzor HC-SR04 sa v niečom podobá na pasívnu sirénku, pomocou ktorej sa dá generovať zvuk rýchlym zapínaním a vypínaním bzučiaka. Teraz použijeme podobný 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.