1) Kody programów wykonanych na zajęciach:
Więzień
Z użyciem planszy testowej.
Wymagane sensory: światło.
Robot zaczyna działanie wewnątrz obszaru zaznaczonego grubą czarną linią na planszy testowej. Chce się z tego obszaru wydostać, ale nie może zrobić tego (nie wolno mu przekroczyć czarnej linii), dopóki nie znajdzie „klucza” - czerwonego obszaru symbolizującego piłkę. Po najechaniu na „klucz” sygnalizuje to dźwiękiem i ucieka z obszaru wewnątrz czarnej linii. Po wydostaniu się sygnalizuje ten fakt dźwiękiem i kończy pracę.
:- consult('plnxt.pl').
start :-
nxt_open,
thread_create(go,_,[detached(true)]),
trigger_create(_,sensor,stop).
go :-
nxt_open,
nxt_light_LED(activate),
trigger_create(_,check_color,odwroc),
trigger_create(_,search_key,get_key),
nxt_go(300).
check_color :-
nxt_light(Value, force),
Value < 50.
odwroc :-
nxt_rotate(320, 120 + random(120), force),
go.
search_key :-
nxt_light(Red, force),
Red = 65.
get_key :-
nxt_stop,
trigger_killall,
nxt_go(300),
trigger_create(_, check_color, make_heppy),
trigger_create(_, black, is_outside, 1).
trigger_create(_,sensor,stop).
sensor :-
nxt_touch(Value, force),
Value = 1,
stop.
make_heppy :-
nxt_play_tone(800, 2000).
is_outside :-
timer_create(_, 3, stop).
stop :-
trigger_killall,
nxt_stop,
nxt_close.
:- start.
Co przybyło?
Wymagane sensory: odległość, dźwięk.
Robot obraca się i bada rozmieszczenie przedmiotów wokół siebie. Po pierwszym obrocie zatrzymuje się. Należy mu dołożyć w tym obszarze jakiś przedmiot. Po klaśnięciu wykonuje drugi obrót. Po wykryciu dostawionego przedmiotu podjeżdza do niego i kończy pracę.
:- consult('plnxt.pl').
start :-
nxt_open,
thread_create(rotate,_,[detached(true)]),
%trigger_create(_,search_key,stop).
trigger_create(_,distance,_).
rotate :-
nxt_rotate(200, 360, force).
distance :-
nxt_ultrasonic(Value, force),
Value < 20,
nxt_play_tone(800, 100),
save_object(Value),
trigger_create(_,distance,_).
save_object(Value):-
assert(new_object(Value)).
:- start.
2) Spostrzeżenia, napotkane problemy, wnioski, uwagi na temat PLNXT:
Podczas próby odczytania wartości z sensora światła dla koloru czerwonego robot przestawał reagować na komendy po trzecim odczycie.
Przy realizacji algorytmu Wiezień trudno było określić jaka jest prawidłowa wartość dla koloru czarnego i czerwonego. Problem wynikał z niejednolitego naświetlenia planszy.
3) Pliki z kodem wynikowym