/*****************************************************************************************
* Spracované podľa: https://techfun.sk/blog/navody-k-modulom/navod-ultrazvukovy-senzor-hc-sr04/?gad_source=1&gclid=CjwKCAjw1emzBhB8EiwAHwZZxXCT_ZSRFniupml7-JtY6jZrtYcJFYtzlX_StD7vyVgZiqAcGiiqSxoCxo0QAvD_BwE
25.6.2024
Demo ukážka pripojenia a spracovania dát zo snímača HC-SR04 - ultrazvukový snímač vzdialenosti
******************************************************************************************/
//tento kód nám zabezpečí odmeranie vzdialenosti a zároveň ju vypíšeme na seriálový monitor
int triggerPin = 11; // Trigger pin
int echoPin = 12; // Echo pin
long trvanie;
int vzdialenost;
void setup() {
Serial.begin(9600); //inicializácia komunikácie s PC
pinMode(triggerPin, OUTPUT); //definovanie pinu ako výstup
pinMode(echoPin, INPUT); //definovanie pinu ako vstup
}
void loop() {
// na veľmi krátky čas 10 mikrosekúnd spustíme ultrazvuk
digitalWrite(triggerPin, LOW);
delayMicroseconds(5);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
trvanie = pulseIn(echoPin, HIGH);
//funkcia pulseIn() nám počká kým na pine echoPin bude signál a vráti nám hodnotu v mikrosekundách
// konverzia času na vzdialenosť
vzdialenost = trvanie * 0.0343 / 2;
Serial.print(vzdialenost); //výpis vzdialenosti
Serial.print("cm"); //výpis
Serial.println(); //prázdny riadok pre medzeru
delay(250); //chvíĺu medzi meraniami počkáme, konkrétne 250 milisekúnd
}
/* Ako sme spomínali vyššie, modul funguje tak, že spustí ultrazvuk a čaká, kým sa nám
signál vráti cez priestor naspäť. Najskôr teda vynásobíme trvanie tohto cestovania rýchlosťou
zvuku vo vzduchu, teda 343 metrov za sekundu. My však máme nameraný časv mikrosekundách, takže
keď to premeníme je to 0.000343 metrov za mikrosekundu. Okrem toho potrebujeme centimetre
takže *100 = 0.0343.
Potom myslime na to, že signál vlastne cestoval tam a späť, takže ešte musíme vydeliť
výsledok dvomi (my chceme len vzdialenosť cesty “tam”). */