ebben a projektben bemutatom a HC-SR04 ultrahangos érzékelőt. Úgy működik, hogy hanghullámokat küld az adóból, amelyek aztán lepattannak egy tárgyról, majd visszatérnek a vevőhöz. Meghatározhatja, hogy milyen messze van valami, mire a hanghullámok visszatérnek az érzékelőhöz. Térjünk rá azonnal!,

Connections

a kapcsolatok nagyon egyszerűek:

  • VCC to 5V
  • GND to GND
  • Trig to pin 9
  • Echo to pin 10

a Trig és Echo a kívánt csaphoz kapcsolódhat, 9 és 10 csak azok, amelyeket használok.

Ábrát (Tinkercad csak egy Ping -))) érzékelőt, így meg kellett szerkeszteni)

Kód

Először határozzuk meg a csapok, hogy Trig Echo csatlakozik.,

const int trigPin = 9; const int echoPin = 10;

ezután 2 úszót, időtartamot és távolságot deklarálunk, amelyek megtartják a hanghullám hosszát és azt, hogy milyen messze van az objektum.

float duration, distance; 

ezután a beállításban a Trig pin-kódot kimenetként, az Echo-pin-t bemenetként deklaráljuk, majd soros kommunikációt indítunk.

void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } 

most, a hurokban először állítsuk be a trigPin alacsony értékét 2 mikroszekundumra, csak hogy megbizonyosodjunk arról, hogy a pin-kód először alacsony., Ezután 10 mikrosekundumra állítjuk magasra, ami egy 8 ciklusú hangrobbanást küld az adóról, amely aztán egy tárgy visszapattan, és eltalálja a vevőt(amely az Echo Pinhez van csatlakoztatva).

amikor a hanghullámok megütik a Vevőt, magasra fordítja az Echo pin-kódot, ameddig a hullámok utaztak. Ahhoz, hogy ezt elérjük, használhatunk egy praktikus Arduino funkciót, amelyet pulseIn () – nek hívnak. 2 érvet igényel, a hallgatott pin(esetünkben az Echo pin), valamint egy állapot(magas vagy alacsony)., A funkció arra vár, hogy a csap bármelyik állapotba kerüljön, elindítja az időzítést, majd leállítja az időzítést, amikor a másik állapotba vált. A mi esetünkben magasra tennénk, mivel el akarjuk kezdeni az időzítést, amikor a visszhang csap magasra kerül. Az időt az időtartam változóban tároljuk. (Mikroszekundumban adja vissza az időt)

duration = pulseIn(echoPin, HIGH); 

most, hogy van időnk, használhatjuk az egyenletet sebesség = távolság/idő, de idővel x sebesség = távolság, mert megvan a sebesség. Milyen sebességünk van? A hang sebessége, természetesen!, A hangsebesség körülbelül 340 méter másodpercenként, de mivel a pulseIn() funkció mikroszekundumban adja vissza az időt, mikroszekundumban is sebességre van szükségünk, ami könnyen beszerezhető. A “hangsebesség centiméterben mikroszekundumonként” gyors Google-keresés azt fogja mondani, hogy az .0343 c / µS. Meg tudná csinálni a matematikai, de keresés könnyebb. Mindenesetre ezzel az információval kiszámolhatjuk a távolságot! Csak szorozzuk meg az időtartamot .0343, majd oszd meg 2-vel(mert a hanghullámok az objektumhoz és vissza). Ezt a távolságváltozóban tároljuk.,

distance = (duration*.0343)/2; 

a többi csak kinyomtatja az eredményeket a Soros monitorra.

 Serial.print("Distance: "); Serial.println(distance); delay(100); } 

borítókép: Sparkfun