[[
✎ pl:plnxt:pierwsze_kroki
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Pierwsze kroki ====== ===== Test połączenia ===== ==== Otwarcie ==== <code prolog> $ pl ?- [plnxt]. ?- nxt_open. </code> Zwróć uwagę na sygnalizację zawarcia połączenia na wyświetlaczu jednostki centralnej. ==== Wydanie polecenia ==== Sprawdzenie poziomu baterii (najprostsze polecenie, które korzysta i z zapisu i z odczytu z urządzenia): <code prolog> ?- nxt_voltage_millivolt(Voltage). </code> Powinien pojawić się poziom baterii, jeżeli nie, mamy problem! ==== Zamknięcie ==== <code prolog> ?- nxt_close. </code> Zwróć uwagę na sygnalizację braku połączenia na wyświetlaczu jednostki centralnej. ===== Praca w powłoce SWIPL ===== Proszę uruchomić powłokę SWIPL i załadować plik plnxt.pl ([plnxt].), a następnie: * Otworzyć połączenie: nxt_open. * Wykonać serię wybranych z dokumentacji poleceń (przemieszczanie, odczyt sensorów). Np.: * nxt_go(300). % Jazda do przodu z prędkością 300 stopni/sekundę. * nxt_stop. * nxt_go_cm(400,80). % Jazda do przodu z prędkościa 400 stopni/sekundę. Zatrzymanie po 80 cm. * nxt_touch(Value). % Odczyt sensora dotyku. * nxt_sound(Value). % Odczyt sensora dźwięku. * nxt_light(Value). % Odczyt sensora światła. * nxt_light_LED(activate). % Włączenie diody sensora światła. * nxt_light(Value). * nxt_light_LED(passivate). * nxt_ultrasonic(Value). * nxt_rotate(350,360). % Obrót w prawo o 360 stopni z prędkością 350 stopni/sekundę. * nxt_play_tone(500,2000). % Wydanie dźwięku o częstotliwości 500 Hz i czasie trwania 2000 ms. * Zamknąć połączenie: nxt_close. ===== Programy w pliku ===== Większość predykatów ma swoją wersję z opcją 'force' (np. nxt_go(400,force).), która wymusza natychmiastowe wykonanie polecenia.\\ Brak tej opcji sprawia, że polecenie oczekuje na wykonanie do zatrzymania robota.\\ To pozwala na pisanie sekwencyjnych programów, jak przykład niżej. Proszę skopiować poniższy kod do pliku i załadować w SWIPL. <code prolog> :- consult('sciezka_do_plnxt.pl'). start :- nxt_open, nxt_go_cm(400,80), % Jazda 80 cm do przodu z prędkością 400 stopni/sekundę. nxt_go_cm(-400,80), % Jazda 80 cm do tyłu z prędkością 400 stopni/sekundę. nxt_close. :- start. </code> ===== Do czego w takim razie przydaje się 'force'? ===== Proszę przetestować proste przykłady programów z wykorzystaniem mechanizmu trigger (FIXME dokumentacja). ==== Przykład 1 ==== <code prolog> :- consult('sciezka_do_plnxt.pl'). start :- nxt_open, trigger_create(_,check_distance,[nxt_stop,nxt_close]), nxt_go(300). check_distance :- nxt_ultrasonic(Distance,force), Distance < 15. </code> Trigger będzie wyzwolony, gdy check_distance będzie prawdziwe. Wtedy zostanie wykonane zatrzymanie robota i zamknięcie połączenia.\\ Zatem jest to prosty program: robot porusza się do przodu do napotkania przeszkody.\\ Pomiar odległości odbywa się cyklicznie. Bez opcji 'force' odbyłby się po zatrzymaniu silników (w tym przypadku "nigdy").\\ Robota czekałoby bolesne spotkanie z przeszkodą. ==== Przykład 2 ==== <code prolog> :- consult('../plnxt.pl'). start:- nxt_open, go_on_buddy, trigger_create(_,pushed,[nxt_stop,nxt_close]). go_on_buddy :- nxt_go(200), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,wait_a_second_buddy). wait_a_second_buddy :- nxt_stop, sleep(1), trigger_create(_,clap,go_on_buddy). % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 15. % Sprawdzenie, czy sensor dotyku jest wciśnięty. pushed :- nxt_touch(Value,force), Value=1. </code> Robot jedzie do przodu. Zatrzymuje się po klaśnięciu. Wznawia ruch po ponownym klaśnięciu.\\ Po wciśnięciu sensora dotyku zatrzymuje się i zamyka połączenie.\\ Proszę odpowiednio dobrać próg natężenia dźwięku.\\ Zbyt niska wartość może spowodować zapętlenie.\\ Zbyt wysoka sprawi, że zamiast klaskać, trzeba będzie solidnie "puknąć" sensor.
pl/plnxt/pierwsze_kroki.1235241646.txt.gz
· ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry