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.

Diagram (V Tinkercad tam byl jen Ping))) senzoru, takže jsem musel upravit)

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