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

pl/dydaktyka/piw/2009/sprawozdania/piw20090429-15d.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