[PROJEKT] HC-SR04 – ultradźwiękowy czujnik odległości i Arduino
W opisywanym przykładzie została wykorzystywana płytka zgodna z Arduino Uno. Sposób połączeń pokazano na rysunku 5, natomiast na fotografii 6 pokazano zmontowany układ. Wejście TRIG czujnika dołączono do linii 3 na płytce Arduino, natomiast wyjście ECHO zostało dołączone do linii 2 na płytce Arduino.
Rys. 5. Sposób dołączenia czujnika do Arduino Uno
Fot. 6. Widok zmontowanego układu
Na listingu 1 znajduje się program przygotowany dla Arduino Uno. Stałe TrigPin i EchoPin wskazują sposób dołączenia czujnika do płytki zgodnie z rysunkiem 5. W zmiennej distance jest przechowywana obliczona odległość pomiędzy czujnikiem i przeszkodą. Do zmiennej duration jest wpisywany czas trwania impulsu na wyjściu ECHO. Czas ten (w mikrosekundach) jest wpisywany przez funkcję pulseIn(). Pomiar jest powtarzany co ok. 500 ms, a wynik pomiaru jest szeregowo wysyłany, np. do komputera, co można obejrzeć wykorzystując terminal komputera (rysunek 7).
List. 1.
#define TrigPin 3 #define EchoPin 2 int distance; long duration = 0; void setup() { Serial.begin (9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); } void loop() { // impuls 10 us wyzwalający pomiar odległości na pinie TRIG digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); // pomiar czasu trwania impulsu na pinie ECHO [us] duration = pulseIn(EchoPin, HIGH); // obliczenie odległości w cm distance = duration/58; if ( distance < 2 || distance > 200 ) Serial.println("----- Poza zakresem"); else { Serial.print("Odeglosc: "); Serial.print( distance ); Serial.println(" cm"); } delay(500); }
Rys. 7. Wizualizacja odebranych danych