Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:plnxt:pierwsze_kroki [2009/02/19 06:54]
holownia
pl:plnxt:pierwsze_kroki [2019/06/27 15:50]
Linia 1: Linia 1:
- 
-FIXME! 
-import from 
-[[pl:​mindstorms:​lab:​lab215]] 
- 
-===== 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 200 cm do przodu z prędkością 400 stopni/​sekundę. 
- nxt_go_cm(-400,​80),​ % Jazda 200 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. W laboratorium może być głośno.\\ 
-Zbyt niska wartość może spowodować zapętlenie.\\ 
-Zbyt wysoka sprawi, że zamiast klaskać, trzeba będzie solidnie "​puknąć"​ sensor. 
- 
  
pl/plnxt/pierwsze_kroki.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0