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.
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
Dodaj komentarz