w tym projekcie przedstawię ci czujnik ultradźwiękowy HC-SR04. Działa poprzez wysyłanie fal dźwiękowych z nadajnika, które następnie odbijają się od obiektu, a następnie wracają do odbiornika. Możesz określić, jak daleko coś jest, zanim fale dźwiękowe dotrą do czujnika. Przejdźmy do rzeczy!,

połączenia

połączenia są bardzo proste:

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

możesz podłączyć Trig i Echo do dowolnych pinów, których chcesz, 9 i 10 to tylko te, których używam.

Diagram (w Tinkercad był tylko Ping))) czujnik więc musiałem to edytować)

Kod

najpierw definiujemy piny, z którymi Trig i echo są połączone.,

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

następnie deklarujemy 2 pływy, czas trwania i odległość, które będą utrzymywać długość fali dźwiękowej i odległość obiektu.

float duration, distance; 

następnie w konfiguracji deklarujemy pin Tryg jako wyjście, pin Echo jako wejście i rozpoczynamy komunikację szeregową.

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

teraz w pętli najpierw ustawiamy trigpin low na 2 mikrosekundy, aby upewnić się, że pin jest low pierwszy., Następnie ustawiamy ją wysoko na 10 mikrosekund, co wysyła 8-cyklowy impuls dźwiękowy z nadajnika, który następnie odbija się od obiektu i uderza w odbiornik (który jest podłączony do pinu Echo).

Kiedy fale dźwiękowe uderzają w odbiornik, obraca się on wysoko na długość fali. Aby to uzyskać, możemy użyć poręcznej funkcji Arduino o nazwie pulseIn (). Wymaga 2 argumentów, pin, którego słuchasz(w naszym przypadku, Pin Echo) i stan (wysoki lub niski)., Funkcja czeka, aż pin przejdzie w dowolny stan, rozpoczyna timing, a następnie zatrzymuje timing, gdy przełączy się na inny stan. W naszym przypadku postawilibyśmy wysoko, ponieważ chcemy rozpocząć czas, gdy pin Echo idzie wysoko. Będziemy przechowywać czas w zmiennej czas trwania. (Zwraca czas w mikrosekundach)

duration = pulseIn(echoPin, HIGH); 

teraz, gdy mamy czas, możemy użyć równania prędkość = odległość/czas, ale zrobimy to czas x prędkość = odległość, ponieważ mamy prędkość. Jaką mamy prędkość? Prędkość dźwięku, oczywiście!, Prędkość dźwięku wynosi około 340 metrów na sekundę, ale ponieważ funkcja pulseIn() zwraca czas w mikrosekundach, musimy mieć również prędkość w mikrosekundach, która jest łatwa do uzyskania. Szybkie wyszukiwanie w Google „prędkość dźwięku w centymetrach na mikrosekundę” powie, że tak .0343 c / µS. Można policzyć, ale wyszukiwanie jest łatwiejsze. W każdym razie, z tymi informacjami, możemy obliczyć odległość! Wystarczy pomnożyć czas trwania przez .0343, a następnie podzielić go przez 2 (ponieważ fale dźwiękowe podróżują do obiektu iz powrotem). Zapiszemy to w zmiennej odległości.,

distance = (duration*.0343)/2; 

reszta to tylko drukowanie wyników na monitorze szeregowym.

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

zdjęcie okładki autorstwa: Sparkfun