Ultrazvučni senzor

1. Zadatak

Micro:Maqueen Lite ima ultrazvučni senzor HC-SR04 kojim može detektirati predmet ispred sebe na udaljenosti od 2 do 400 cm. Izradite najprije program kojim će micro:Maqueen Lite uključiti obje svjetleće diode i odsvirati melodiju po želji ako mu približite predmet na udaljenosti manjoj od 15 cm.

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 10 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. U if dio naredbe postavite provjeru je li udaljenost robota od prepreke veća od 1 cm i manja od 15 cm. Za to upotrijebite logički operator and te u njemu postavite provjere udaljenost od prepreke. S lijeve strane logičkog operatora postavite naredbe kojima provjeravate je li udaljenost robota od prepreke veća od 1 cm. Operatori usporedbe nalaze se u kategoriji Logic. S lijeve strane operatora usporedbe postavite naredbu read ultrasonic cm, a s desne strane upišite vrijednost 1. To ponovite i za provjeru udaljenosti manjoj od 15 cm i te naredbe postavite u desni dio logičkog operatora and.

Ako je uvjet koji ste definirali zadovoljen (prepreka je negdje na udaljenosti od 1 cm do 15 cm od robota), neka se uključe obje svjetleće diode i zasvira melodija. Stoga u then dio naredbe postavite naredbe za uključenje svjetlećih dioda (LEDLight left turn ON i LEDLight right turn ON) i naredbu za sviranje tona (play tone Middle C for 1 beat) koju pronađite u kategoriji Music.

Ako uvjet nije istinit, odnosno udaljenost od prepreke je veća od 15 cm, u else dio smjestite naredbe za isključenje svjetlećih dioda (LEDLight left turn OFF i LEDLight right turn OFF) i isključenje zvuka (stop all sounds).

2. Zadatak

Neka robot prati tvoju ruku ako je od njegovog ultrazvučnog senzora udaljena najviše 10 cm. To neka čini tako da vozi ravno brzinom 100. U slučaju da je tvoja ruka predaleko i da robot ne detektira niti jednu drugu prepreku ispred sebe, neka se tada zaustavi.

Rješenje

Objašnjenje

Iz Logic kategorije naredbi odaberite if then else naredbu te je postavite unutar forever bloka. If then else naredba poslužit će za provjeru vrijednosti koju očitava ultrazvučni senzor te se s obzirom na postavljen uvjet, upravljati radom robota. U if dio postavite uvjet slično kao u prethodnom zadatku kojim ćete provjeriti je li udaljenost robota od prepreke veća od 1 cm i manja od 10 cm.

Ako je taj uvjet zadovoljen, robot se mora kretati i naredbu za to postavite u then dio. To je naredba motor all move Forward at speed 0 iz kategorije naredbi Maqueen kojoj postavite vrijednost brzine na 100.

U slučaju da zadani uvjet nije zadovoljen, robot se mora zaustaviti pa u else dio postavite istu naredbu motor all move Forward at speed 0.

3. Zadatak

Izmijenite prethodni program tako da se robot kreće sve dok ne naiđe na prepreku. Kada ultrazvučnim senzorom detektira prepreku na udaljenosti većoj od 1cm i manjoj ili jednakoj 10 cm, neka se robot zaustavi i uključi obje svjetleće diode. Kada se kreće, neka su obje svjetleće diode isključene.

Rješenje

Objašnjenje

U programu prethodnog zadatka zamijenite mjesta naredbama motor all move Forward at speed 100 i motor all move Forward at speed 0. Sada će se robot zaustaviti kada je uvjet u if dijelu zadovoljen, odnosno kada ultrazvučni senzor detektira prepreku na udaljenosti većoj od 1 cm i manjoj ili jednakoj 10 cm. Kada uvjet nije zadovoljen i nema prepreke, robot se kreće ravno brzinom 100.

Kako bi se upalile obje svjetleće diode kada robot naiđe na prepreku, iz Maqueen kategorije naredbi odaberite naredbu LEDlight left turn ON i stavite je unutar if then dijela. Sada će se upaliti samo lijeva svjetleća dioda pa duplicirajte istu naredbu (desni klik mišem na LEDlight left turn ON naredbu, duplicate) i umjesto left odaberite right. Ovime ste programirali robot da kada detektira prepreku, uključi obje svjetleće diode.

Duplicirajte naredbe LEDlight left turn ON LEDlight right turn ON i postavite ih u else dio naredbe if then else te ON promijenite u OFF. Svjetleće diode će sada biti isključene kada se robot kreće ravno.