Mobile
HC-SR04 to klasyka modułów pomiaru odległości dla Arduino . Jego sukces wynika z tego, jak prosto i łatwo można sprawić, by działał w projektach Arduino , PIC lub dowolnym innym mikrokontrolerze. Na jego pinie wyjściowym możemy zmierzyć szerokość impulsu PWM na podstawie odległości od przeszkody.
Połączenie
Moduł zasilany jest bezpośrednio z Arduino , więc nie potrzebujemy zewnętrznego zasilania.
Piny są połączone zgodnie z tabelą:
Moduł pinów
Przypnij przez Arduino UNO
Vcc
5V
WYRZUCIŁ
D2
WYMUSKANY
D3
GND
Schemat jest więc następujący:
Aby wygenerować ultradźwięki, musimy ustawić pin wyzwalacza w stan wysoki na 10 µs. To wyśle 8-cyklową serię dźwiękową, która będzie podróżować z prędkością dźwięku i zostanie odebrana na Echo Pin. Echo Pin wygeneruje czas w mikrosekundach, przez jaki przebyła fala dźwiękowa.
Na przykład, jeśli obiekt znajduje się 20 cm od czujnika, a prędkość dźwięku wynosi 340 m / s lub 0,034 cm / µs, fala dźwiękowa będzie musiała przebyć około 588 mikrosekund. Ale to, co otrzymasz ze szpilki Echo, będzie dwukrotnie większe, ponieważ fala dźwiękowa musi przemieszczać się do przodu i odbijać się z powrotem. Aby więc otrzymać odległość w cm, musimy pomnożyć wartość czasu podróży otrzymanego z pinu echa przez 0,034 i podzielić przez 2.
Kod
Dla kodu programowania musimy najpierw zdefiniować Pin Trigger i Echo Pin, które zostały podłączone do Arduino . W tym projekcie EchoPin jest dołączony do D2, a TrigPin do D3. Następnie zdefiniuj zmienne dotyczące odległości (int) i czasu trwania (long).
Otwórz nowy szkic i wklej następujący kod:
const int EchoPin = 2;
const int TriggerPin = 3;
void setup () {
Serial.begin (9600);
pinMode (TriggerPin, OUTPUT);
pinMode (EchoPin, INPUT);
}
void loop () {
int cm = ping (TriggerPin, EchoPin);
Serial.print ("Zmierzona odległość:");
Serial.println (cm);
opóźnienie (1000);
// Obliczenia odległości
int ping (int TriggerPin, int EchoPin) {
długi czas trwania, odległośćCm;
digitalWrite (TriggerPin, LOW); // aby wygenerować czysty impuls ustawiamy LOW 4us
delayMicroseconds (4);
digitalWrite (TriggerPin, HIGH); // generujemy Trigger (trigger) o wartości 10us
delayMicroseconds (10);
digitalWrite (TriggerPin, LOW);
duration = pulseIn (EchoPin, HIGH); // mierzymy czas między impulsami w mikrosekundach
distanceCm = czas trwania * 10/292/2; // przelicz na odległość w cm
return distanceCm;
Teraz, po załadowaniu kodu, jeśli otworzymy Monitor szeregowy z Narzędzi, możemy zobaczyć odległość, na jaką ustawiamy obiekty przed czujnikiem. Spróbuj powiększyć i pomniejszyć.
Z drugiej strony, interesującą biblioteką, której możesz używać z tym modułem jest NewPing.h