Czujnik odległości pozwala robotowi wykrywać znajdujące się przed nim przeszkody. W Lo Fi Robocie zdecydowaliśmy się na wykorzystanie czujników SHARP (dokładnie GP2Y0A41SK0F) ich główną zaletą jest prostota podłączenia i odczytywania pomiarów oraz ich stabilność.
Czujnik podłączmy do Arduino przy pomocy trzech przewodów, najlepiej połączonych wtyczką JST 3-pin.
Wyjścia czujnika to odpowiednio:
1. Vo – sygnał pomiarowy – odpowidający odległości przeszkody od czujnika
2. GND – minus (-) – masa – uziemienie czujnika – podłączamy do GND Arduino lub niebieskiej listwy zasilającej na płytce prototypowej
3. Vcc – zasilanie czujnika – podłączmy do +5V
Sygnalizacja świetlno-dźwiękowa
Prostym przykładem wykorzystania czujnika odległości może być skonstruowanie sygnalizacji alarmowej, która dawać będzie sygnał świetlny i dźwiękowy w momencie wykrycia przeszkody z częstotliwością proporcjonalną do odległości przeszkody.
Do skonstruowania sygnalizacji potrzebujemy:
- Arduino
- Płytka prototypowa i kabelki
- Czujnik odległości SHARP
- Dioda LED
- Buzzer – czyli mały głośniczek z wbudowanym generatorem
Podłączenie czujnika SHARP jest bardzo proste, do czujnika wepnij kabelek JST 3pin a następnie jego przewody połącz odpowiednio:
1. Czerwony – +5V
2. Czarny – GND
3. Żółty – pin anologowy AO (lub jeśli wolisz jakiś inny pin analogowy)
Nasza sygnalizacja składać się będzie z dwóch migających diod LED (wybór koloru zależy od Ciebie!) oraz tzw. buzzera.
Buzzer wygląda jak mały głośniczek, różni się jednak tym, że posiada dodatkowo wbudowany tzw. generator, emitujący charakterystyczny piszczący dźwięk o wysokiej częstotliwości. Aby buzzer zaczął piszczeć wystarczy podłączyć go do zasilania.
Podłączenie elektroniczne naszej instalacji alarmowej wygląda następująco:
1. Buzzer (nóżkę oznaczoną +) podłączamy do pinu cyfrowego nr 4
2. Za buzzerem szerogowo wpinamy diodę led (minus buzzera do plusa diody), krótszą nogę diody wpinamy do masy, tym razem dioda nie potrzebuje opornika, funkcję zabezpieczenia przed przepaleniem pełni buzzer.
Programowanie
Podłącz Arduino do komputera i połącz go ze Snap4Arduino
W pierwszej kolejności zaprogramujemy prostą sygnalizację polegającą na uruchomieniu buzzera i diody w momencie gdy wartość odczytana z czujnika przekroczy określony poziom (w tym wypadku 100).
W zakładce DANE kliknij przycisk UTWÓRZ ZMIENNĄ i nazwij ją ODLEGŁOŚĆ
Konstrujemu następujący algorytm:
1. Po uruchomieniu programu (zielona flaga) ustaw pin cyfrowy 4 jako DIGITAL OUTPUT (wyjście)
2. W pętli ZAWSZE odczytujemy wartość z pinu analogowego nr 0 (do którego podłączony jest czujnik) i przypisujemy ją do zmiennej ODLEGŁOŚĆ
3. Jeżeli wartość zmiennej ODLEGŁOŚĆ przekroczy 100 ustawiamy wyjście na pinie 4 jako PRAWDA (włączamy buzzer i diodę) w innym wypadku ustawiamy ją jako FAŁSZ (wyłączamy buzzer i diodę)
Po uruchomieniu programu zwróć uwagę że w prawym górnym rogu ekranu pojawiło się pole zmiennej ODLEGŁOŚĆ, w którym na bieżąco wyświetlane są wartości odczytane z czujnika odległości, wartość ta powinna się zmieniać w zakresie 2-600 jednostek. Zwróć uwagę, że nie są to rzeczywiste pomiary odległości w centymetrach, żeby je uzyskać należałoby wyniki odpowiednio przeliczyć, proces ten nazywa się kalibracją czujnika, w tym wypadku nie jest nam ona potrzebna.
W momencie zbliżenia ręki do czujnika, gdy wartość odległości przekroczy 100, buzzer i dioda zostają uruchomione, gdy oddalimy rękę (odległość spada poniżej 100) buzzer przestaje piszczeć.
W dalszej kolejności rozwińmy nasz program tak aby buzzer zamiast jednostajnego pisku wykonywał sekwencję “piknięć”, której tempo (częstotliwość) zależeć będzie od odległości przeszkody wykrytej przez czujnik odległości
Modyfikujemy nasz program w następujący sposób:
1. Tworzymy nową zmienną TEMPO, której wartość będzie zależna od zmiennej odległość ale przeliczonej odpowiednio tak aby zmieniała się ona w zakresie od 0.2 do 0.1 i zmniejszała się w momencie zbliżania przeszkody do czujnika.
2. W pętli JEŻELI dodajemy bloki CZEKAJ z wartością odpowiadającą zmiennej TEMPO (czyli zależnie od odległości przeszkody czekaj od 0.2 do 0.1 sekundy) i podobnie jak w przykładzie BLINK włączamy buzzer, czekamy wartość TEMPO, wyłączamy buzzer, czekamy wartość TEMPO, dzięki czemu buzzer i dioda będą cyklicznie pulsować a częstotliwość pulsowania zależy od zmiennej TEMPO.