Senzor za praćenje linije

S donje strane micro:Maqueen robota nalaze se dva senzora za praćenje linije. Pomoću tih senzora robot raspoznaje nalazi li se na crnoj ili bijeloj podlozi. Kad je robot na bijeloj podlozi dva plava indikatora s gornje strane robota će svijetliti, a kad je na crnoj podlozi, onda indikatori ne svijetle.

1. Zadatak

Izradite najprije program kojim će micro:Maqueen robot pratiti crnu liniju staze s lijeve strane. Stazu možete preuzeti ovdje. Sami možete izraditi svoje staze i programirati robota da po njima prati crnu liniju. U ovom zadatku neka robot prati liniju tako da vozi ravno onda kada je samo s desnim senzorom na crnoj površini linije.

Rješenje

Objašnjenje

Kad postavite robot na stazu možete primijetiti da se on može naći u 4 moguće situacije: s oba senzora na crnoj podlozi, s oba senzora na bijeloj podlozi, s lijevim na crnoj i s desnim na bijeloj te s lijevim na crnoj i s desnim na bijeloj podlozi. Za svaku od ovih situacije morate odrediti kako se robot mora kretati kako bi ne bi uspješno pratio stazu i ne odlutao s nje.

Zato ćete iz kategorije naredbi Logic upotrijebiti 4 if then naredbe  te ih postaviti unutar naredbe forever. U svakoj od tih 4 naredbe potrebno je definirati jednu od situacija u kojoj se robot može naći dok se kreće stazom prema postavljenoj logici praćenja linije:

  • Ako je desni senzor na crnoj liniji, a lijevi na bijeloj, robot neka ide ravno.
  • Ako su oba senzora na crnoj podlozi, neka se robot zakrene ulijevo kako bi ponovno samo s desnim senzorom bio na crnoj podlozi.
  • Ako je lijevi senzor na crnoj liniji, a desni na bijeloj, neka se robot zakrene udesno kako bi ponovno samo s desnim senzorom bio na crnoj podlozi.
  • Ako su oba senzora na bijeloj podlozi, neka se robot zakrene udesno kako bi ponovno samo s desnim senzorom bio na crnoj podlozi.

U prvom if then bloku provjerite je li robot s lijevim senzorom izašao na bijelu podlogu, a pritom s desnim ostao na crnoj crti. Iz kategorije naredbi Logic odaberite naredbu and te u desni i u lijevi argument postavite operator jednakosti. U svaki od argumenata unutar operatora jednakosti postavite s lijeve strane naredbu read left line tracking sensor iz kategorije Maqueen te promijenite left u right u drugom operatoru jednakosti. S desne strane upišite vrijednost 1, odnosno 0. Ako je provjera tog uvjeta istinita, robot mora voziti ravno, pa iskoristite naredbu motor all move Forward 100 i postavite je u then dio.

U drugom if then bloku provjerite je li robot s oba senzora na crnoj crti. Tada su read left line tracking sensor i read left right tracking sensor jendaki 0. Ako je provjera tog uvjeta istinita, robot mora zakrenuti ulijevo kako bi s lijevim senzorom izašao na bijelu podlogu pa iskoristite naredbe motor left move Backward at speed 50 i motor right move Forward at speed 50.

U trećem if then bloku definirajte uvjet i kretanje robota kada je s lijevim senzorom na crnoj, a s desnim na bijeloj podlozi. Tada robot treba skrenuti desno pa iskoristite naredbe motor right move Backward at speed 50 i motor left move Forward at speed 50.

Na kraju, u posljednjem if then bloku, postavite da robot ponovno skreće udesno naredbama motor right move Backward at speed 50 i motor left move Forward at speed 50, ako se s oba senzora za praćenje linije nađe na bijeloj površini.

2. Zadatak

Izmijenite prethodni zadatak tako da se cijeli program prethodnog zadatka nalazi u funkciji koja se zove Praćenje linije. Robot prati liniju pozivom na tu funkciju.

Rješenje

Objašnjenje

U kategoriji naredbi Functions koja se nalazi u Advanced dijelu, odaberite opciju Make a function.  Otvorit će se prozor Edit Function u kojem možete složiti funkciju. U dijelu gdje piše doSomething upišite naziv funkcije Pracenje linije.  Nakon toga pritisnite Done. Sada se u dijelu za izradu programa pojavio blok function Pracenje linije.

U funkciju Pracenje linije smjestite sve naredbe iz prethodnog zadatka koje su bile u forever petlji. U forever petlju stavite naredbu call Pracenje linije koja se nalazi u Functions kategoriji naredbi. Ovom naredbom se izvršavaju sve naredbe unutar bloka function Pracenje linije.

Sada se stalno poziva funkcija Pracenje linije i robot prati liniju isto kao u prethodnom zadatku.