Ultrazvučni senzor

1. Zadatak

micro:Maqueen ima ultrazvučni senzor HC-SR04 kojim može detektirati predmet ispred sebe na udaljenosti od 2 do 400 cm.

Izradite program kojim će robot pratiti liniju, a kada naiđe na prepreku na udaljenosti između 1 cm i 5 cm, neka se okrene i nastavi pratiti liniju u drugom smjeru. Praćenje linije neka bude tako da se robot vozi ravno onda kada je samo s desnim senzorom na crnoj liniji. Za prepreku možete iskoristiti neki predmet (kutijica, knjiga, igračka, ruka i sl.) koji ćete postaviti na ravan dio linije na stazi.

Napomena: Ovaj ultrazvučni senzor ponekad pogrešno očita udaljenost od prepreke tako da u svojim očitanjima zabilježi da se ona nalazi na nula centimetara od njega. Da bi se izbjeglo da robot u trenutcima krivog očitanja odradi neku radnju (primjerice da se zaustavi) svaki put kada definirate udaljenost na kojoj on prati ima li objekt ispred sebe ili nema, zadajte je dvjema krajnjim vrijednostima, odnosno u rasponu. Na primjer da robot traži prepreku na udaljenosti većoj od 1 cm, a manjoj od 5 cm.

Rješenje

Objašnjenje

Iz kategorije Logic odaberite naredbu if then else kako biste regulirali rad robota s obzirom na njegovu udaljenost od prepreke i postavite je unutar forever petlje. U if dio naredbe postavite provjeru je li udaljenost robota od prepreke veća od 1 cm i manja od 5 cm. Za to upotrijebite logički operator and iz kategorije Logic. U lijevo polje operatora and stavite operator usporedbe veće od (>), a u desno polje operator usporedbe manje od (<), oba iz kategorije Logic. S lijeve strane svakog operatora usporedbe postavite naredbu read ultrasonic cm, a s desne strane upišite broj 1, odnosno 5. Ako su oba uvjeta zadovoljena, neka se robot zakrene udesno naredbama motor right move Backward at speed 50 i motor left move Forward at speed 50.

Ako uvjet nije istinit, odnosno udaljenost od prepreke je veća od 5 cm ili manja od 1 cm, robot neka prati liniju. Stvorite funkciju Pracenje linije koja će sadržavati naredbe za praćenje crne linije tako da robot vozi ravno onda kada je lijevi senzor na bijeloj podlozi, a desni senzor na crnoj podlozi. U else dio unutar forever petlje smjestite naredbu call Pracenje linije. Njome se poziva funkcija Pracenje linije te robot prati liniju sve dok ne naiđe na prepreku.

2. Zadatak

Izmijenite prethodni program tako da se robot zaustavi kada naiđe na prepreku na udaljenosti manjoj od 10 cm.

Rješenje

Objašnjenje

U argumentu if dijela if then else naredbe unutar forever bloka, umjesto broja 5 upišite broj 10. Kada ultrazvučni senzor detektira vrijednost veću od 1, a manju od 10, robot se mora zaustaviti. U if dio stavite samo naredbu motor all stop iz Maqueen kategorije naredbi.