Kretanje koristeći Timer

Zadatak

Neka robot vozi naprijed 10 sekundi i onda stane.

Rješenje

Objašnjenje

Blok u koji ćete stavljati sve naredbe je micro:bit starts iz micro:bit kategorije. U kategoriji Variables napravite novu varijablu (Make a Numeric Variable) i nazovite ju Timer. Iz te iste kategorije odaberite naredbu set my float variable to 0, stavite ju u micro:bit starts blok te umjesto zadane my float variable varijable odaberite varijablu Timer. Na dnu micro:bit kategorije možete naći naredbu system uptime(ms). Ona vraća vrijeme koje je proteklo od uključivanja micro:bita. Tu naredbu postavite u polje 0 u naredbi set Timer to 0. Time se vrijednost proteklog vremena sprema u varijablu Timer.

Iz kategorije Control uzmite repeat until petlju. Kao uvjet petlje stavite naredbu usporedbe je veće (>) koja se nalazi u Operators kategoriji. Želite provjeriti je li trenutno vrijeme koje mjeri micro:bit (system uptime(ms)) veće od početnog vremena pohranjenog u varijabli Timer uvećanog za 10000 milisekundi. Stoga u lijevo polje naredbe usporedbe smjestite naredbu system uptime(ms), a u desno polje naredbu zbrajanja (+) iz Operators kategorije pomoću koje ćete zbrojiti vrijednost varijable Timer s brojem 10000. Budući da system uptime(ms) koristi milisekunde(ms), 10 sekundi je potrebno zapisati u milisekundama (10 s = 10000 ms). Time se petlja odvija dok nije ispunjen uvjet da je ukupno proteklo vrijeme od uključivanja micro:bita veće od početnog vremena uvećanog za 10000 milisekundi (10 sekundi). Dok god uvjet nije ispunjen, robot vozi naprijed (set all motor direction rotate forward speed 100). Ako je uvjet ispunjen, tj. prošlo je 10 sekundi, robot se zaustavlja (set all motor stop).