v tomto projektu vám představím ultrazvukový senzor HC-SR04. Funguje tak, že vysílá zvukové vlny z vysílače, které se pak odrazí od objektu a pak se vrátí do přijímače. Můžete určit, jak daleko je něco v době, kdy trvá, než se zvukové vlny dostanou zpět ke senzoru. Pojďme na to!,
Připojení
připojení jsou velmi jednoduché:
- VCC na 5V
- GND na GND
- Trig na pin 9
- Echo na pin 10
ve skutečnosti můžete připojit Trig a Echo kolíky podle toho, co chceš, 9 a 10 jsou jen ty, které používám.
Kód
Nejprve jsme definovat piny, které Trig a Echo jsou připojeni.,
const int trigPin = 9; const int echoPin = 10;
pak prohlásíme 2 plováky, trvání a vzdálenost, které udrží délku zvukové vlny a jak daleko je objekt.
float duration, distance;
Next, v nastavení, budeme deklarovat Trig pin jako výstup, Echo pin jako vstup a start Sériové komunikace.
void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); }
nyní ve smyčce nejprve nastavíme trigPin low na 2 mikrosekundy, abychom se ujistili, že pin je nejprve nízký., Poté jsme jej nastavili vysoko na 10 mikrosekund, což vysílá zvukový výbuch 8 cyklu z vysílače, který pak odrazí objekt a zasáhne přijímač(který je připojen k Echo Pin).
když zvukové vlny zasáhly přijímač, otočí Echo pin vysoko, jak dlouho vlny cestovaly. K tomu můžeme použít šikovnou funkci Arduino zvanou pulseIn (). Trvá 2 argumenty, pin, který posloucháte(v našem případě Echo pin) a stav (vysoký nebo nízký)., Funkce čeká, až pin přejde podle toho, do kterého stavu vložíte, spustí načasování a poté zastaví načasování, když se přepne do druhého stavu. V našem případě bychom dali vysoko, protože chceme začít načasování, když Echo pin jde vysoko. Čas uložíme do proměnné trvání. (To se vrací čas v mikrosekundách)
duration = pulseIn(echoPin, HIGH);
Teď, když máme čas, můžeme použít rovnici, rychlost = vzdálenost/čas, ale budeme dělat, že je čas x rychlost = vzdálenost, protože máme rychlost. Jakou máme rychlost? Rychlost zvuku, samozřejmě!, Rychlost zvuku je přibližně 340 metrů za sekundu, ale od pulseIn() vrací čas v mikrosekundách, budeme muset mít rychlost v mikrosekund také, což je snadné se dostat. Rychlé vyhledávání Google pro „rychlost zvuku v centimetrech na mikrosekundu“ řekne, že je .0343 c / µS. Dalo by se to spočítat, ale hledání je jednodušší. Každopádně s těmito informacemi můžeme vypočítat vzdálenost! Stačí vynásobit dobu trvání .0343 a poté jej rozdělte na 2 (protože zvukové vlny cestují k objektu a zpět). Uložíme to do proměnné vzdálenosti.,
distance = (duration*.0343)/2;
zbytek jen tiskne výsledky na Sériový Monitor.
Serial.print("Distance: "); Serial.println(distance); delay(100); }
Cover image by: Sparkfun
Napsat komentář