Hlavní parametry senzoru:
| Parametr | Hodnota |
|---|---|
| Napájecí napětí | 5V |
| Proudový odběr | ~15 mA |
| Frekvence ultrazvuku | 40 kHz |
| Měřicí rozsah | 2 – 400 cm |
| Přesnost | ±3 mm |
| Úhel detekce | ~15° |
| Rozhraní | 2 digitální piny (Trig, Echo) |
HC-SR04 měří vzdálenost pomocí ultrazvuku. Po impulsu na pinu TRIG vyšle krátký ultrazvukový signál (40 kHz) a čeká na jeho odraz od překážky. Od doby odeslání signálu až do chvíle, kdy se odražený signál vrátí, pin je pin ECHO v log. 1. V okamžiku kdy je detekován odraz, nastaví se do log. 0. Z délky tohoto impulzu se podle rychlosti zvuku spočítá vzdálenost.

Zdroj obrázku: https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/
Kromě +5V napájení a GND musíme čidlo připojit ke dvěma libovolným digitálním pinům Arduina. Pin Trig slouží ke spuštění měření (vyslání ultrazvukového pulzu), musíme jej tedy v Arduinu nastavit jako výstup. Pin Echo je výstup senzoru (tedy z pohledu Arduina vstup), na kterém senzor generuje puls, jehož délka odpovídá době od vyslání signálu do návratu odražené vlny.
Zdroj obrázku: https://pico.implrust.com/ultrasonic/how-it-works.html

Zdroj obrázku: https://electronoobs.com/eng_arduino_tut36.php
Abychom zjistili změřenou vzdálenost, potřebujeme změřit délku pulzu na pinu Echo. Mohli bychom pro to použít periferii mikrokontroleru časovač, ale usnadníme si práci využitím standartní funkce Arduino pulseIn(). Funkce vyžaduje dva argumenty - na jakém pinu chceme pulz měřit a zda chceme měřit délku HIGH nebo LOW pulzu.
int pin = 7;
unsigned long duration;
void setup() {
Serial.begin(9600);
pinMode(pin, INPUT);
}
void loop() {
duration = pulseIn(pin, HIGH);
Serial.println(duration);
}