Ultrazvuk vysvětlení

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
QRocky
Příspěvky: 36
Registrován: 28 zář 2017, 16:30
Reputation: 0

Ultrazvuk vysvětlení

Příspěvek od QRocky » 04 lis 2017, 00:26

Ahojte, omlouvám se za urážku znalé komunity :oops:
Mohl byste mi, prosím, někdo vysvětlit zvýrazněnou část kódu?

Jedná se o připojení ultrazvuku. U této části jsem se zasekl s pochopením...
Jsem začátečník a chtěl bych rozumět těm kódům, ne je jen kopírovat :) Díky

// Arduino Měřič vzdálenosti ultrazvukový

// piny pro připojení Trig a Echo z modulu
int pTrig = 4;
int pEcho = 5;
// inicializace proměnných, do kterých se uloží data
long odezva, vzdalenost;

void setup() {
// nastavení pinů modulu jako výstup a vstup
pinMode(pTrig, OUTPUT);
pinMode(pEcho, INPUT);
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
}

void loop()
{
// nastavíme na 2 mikrosekundy výstup na GND (pro jistotu)
// poté nastavíme na 5 mikrosekund výstup rovný napájení
// a poté opět na GND
digitalWrite(pTrig, LOW);
delayMicroseconds(2);
digitalWrite(pTrig, HIGH);
delayMicroseconds(5);
digitalWrite(pTrig, LOW);
// pomocí funkce pulseIn získáme následně
// délku pulzu v mikrosekundách (us)
odezva = pulseIn(pEcho, HIGH);
// přepočet získaného času na vzdálenost v cm
vzdalenost = odezva / 58.31;
Serial.print("Vzdalenost je ");
Serial.print(vzdalenost);
Serial.println(" cm.");
// pauza 0.5 s pro přehledné čtení
delay(500);
}

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: Ultrazvuk vysvětlení

Příspěvek od petan » 04 lis 2017, 00:51

Funkce pulseln měří dobu pulsu v mikrosekundách.
Pokud je parametr funkce HIGH, tak čeká, dokud nebude na zvoleném pinu log. 1. Jakmile se objeví log. 1, tak začne počítat do té doby, dokud vstup zase nespadne na log. 0. Funkce poté vrátí změřený čas.Pozor, arduino na této funkce čeká, dokud nespadne vstup do log. 0. Je dobré použít timeout.

Více zde: https://www.arduino.cc/en/Reference/PulseIn

Můžeš kouknout do "datasheetu" čidla zde: http://www.micropik.com/PDF/HCSR04.pdf
Z Arduina příjde do snímače 10 uS dlouhý signál (trigger). Senzor poté vyšle 8 ultrazvukových impulzů. Naměřenou vzdálenost poté reprezentuje doba sepnutého výstupu ze snímače - tato doba se měří právě pomocí funkce Pulseln

Nakonec se délka impulsu přepočte na vzdálenost. Vzdálenost je samozřejmě závislá na rychlosti zvuku (ta se mění vlivem teploty a vlhkosti). Zjednodušeně to je (dle datasheetu výše) počet naměřených mikrosekund / 58. Výsledek poté výjde v centimetrech.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti