Ahojte, omlouvám se za urážku znalé komunity
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);
}
Ultrazvuk vysvětlení
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: Ultrazvuk vysvětlení
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.
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.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti