Micro:bit kao kontroler
Micro:bit kao daljinski upravljač: akcelerometar mjeri nagib (pitch i roll), odašiljač radio-vezom šalje smjer, a prijemnik stane kad izgubi vezu.

Tako rade mnogi pravi upravljači: igraće konzole koje osjete pokret ruke, autići i dronovi na daljinsko upravljanje. A uskoro ćemo tako upravljati i robotima.
Danas ćemo:
- saznati kako micro:bit osjeti da je nagnut;
- izmjeriti nagib u stupnjevima;
- pretvoriti nagib u strelicu;
- napraviti odašiljač koji šalje smjer i prijemnik koji ga prikazuje;
- naučiti prijemnik da stane kad ne čuje odašiljač.
Materijal
Danas svatko ima dva micro:bita:
- odašiljač – micro:bit koji držiš u ruci, s battery packom;
- prijemnik – micro:bit koji stoji na stolu, spojen USB kabelom.
To su isti odašiljač i prijemnik kao u radio igrama. Na oba micro:bita je naljepnica s brojem tvoje radio grupe (od 11 do 18). Na jednoj naljepnici piše odašiljač, a na drugoj prijemnik. Zapamti broj svoje grupe, trebat će ti i kasnije.
Dva programa koja rastu
Danas pišeš dva programa, za svaki micro:bit po jedan:
- Odašiljač gradiš u vježbama 1, 2 i 3.
- Prijemnik gradiš u vježbama 3, 4 i 5.
Svaka vježba nastavlja tamo gdje je prethodna stala. Zato u svakoj vježbi piše samo što dodaješ, mijenjaš ili uklanjaš, a slika pokazuje nove blokove.
Kako micro:bit zna da je nagnut?
Na stražnjoj strani micro:bita je mali dio koji se zove akcelerometar. On osjeti na koju stranu vuče sila teža.
Zamisli kutiju u kojoj je kuglica. Kad kutiju nagneš, kuglica se otkotrlja na nižu stranu. Akcelerometar nema kuglicu, ali osjeti isto: koja je strana niža i koliko.
Akcelerometar već poznaješ, iako mu nismo znali ime. On prepoznaje protresanje u digitalnoj kockici i u igri mirne ruke.
Micro:bit može biti nagnut na dva načina, kao avion:
- pitch – naprijed i natrag, kao kad avion spusti ili podigne nos;
- roll – lijevo i desno, kao kad avion nagne krila.

Nagib čita blok rotation (°) iz kategorije Input. U njemu odabereš pitch ili roll, a blok vrati kut u stupnjevima. Kad micro:bit leži ravno, kut je otprilike 0. Kad stoji okomito, kut je otprilike 90.
Kako držimo odašiljač: ravno na dlanu, ekranom prema gore, s logotipom okrenutim od sebe, kao pladanj. Naprijed znači da kraj s logotipom nagneš prema dolje, od sebe.
Zašto ne koristimo blok on tilt left?
MakeCode ima i događaje tilt left, tilt right, logo up i logo down. Oni se pokrenu jednom, kad micro:bit nagneš jako, gotovo okomito.
Za upravljanje to nije dovoljno. Želimo znati koliko je micro:bit nagnut, i to stalno. Zato čitamo kut blokom rotation (°).
Vježba 1: Koliko je nagnut?
Program: odašiljač, prvi korak Tehnika: mjerenje prije programiranja
Prije nego što micro:bit naučimo upravljati, izmjerit ćemo kakve brojeve daje.
Spoji na računalo micro:bit s naljepnicom odašiljač. U MakeCodeu napravi novi projekt i nazovi ga Odašiljač. U njemu ćeš raditi i u sljedeće dvije vježbe.
U bloku forever micro:bit stalno mjeri nagib i sprema ga u varijable pitch i roll. Tipke samo pokazuju izmjereni broj.

Predvidi
Prije mjerenja pogodi: kad micro:bit nagneš naprijed, hoće li pitch biti pozitivan ili negativan broj? A kad ga nagneš ulijevo, kakav će biti roll?
Izmjeri
Drži micro:bit nagnut i pritisni tipku. Broj prolazi ekranom, pa ga pažljivo pročitaj. Upiši brojeve u tablicu:
| Položaj | pitch (A) | roll (B) |
|---|---|---|
| Ravno | ||
| Naprijed (logo prema dolje) | ||
| Natrag (logo prema gore) | ||
| Lijevo | ||
| Desno |
Provjeri svoju tablicu
Primijeti da broj rijetko bude točno 0, čak i kad micro:bit miruje na stolu. Senzor nije savršen, a ruka nikad nije potpuno mirna. Zato ćemo u sljedećoj vježbi reći: nagnut je tek ako je kut veći od 20 stupnjeva.
Vježba 2: Nagib postaje strelica
Program: odašiljač, drugi korak Tehnika: lanac uvjeta i mrtva zona
Nastavljamo u projektu Odašiljač. Sada micro:bit treba sam odlučiti u koju je stranu nagnut i pokazati strelicu.
Smjer pamti nova varijabla smjer, i to kao broj, jer ćemo ga u sljedećoj vježbi slati radio-vezom. To su naše dogovorene poruke:
| Nagib | smjer | Na ekranu |
|---|---|---|
| pitch manji od −20 | 1 – naprijed | ↑ |
| pitch veći od 20 | 2 – natrag | ↓ |
| roll manji od −20 | 3 – lijevo | ← |
| roll veći od 20 | 4 – desno | → |
| sve ostalo | 0 – stoj | točkica u sredini |

Ukloni blokove on button A pressed i on button B pressed. Kad bi ostali, broj i strelica borili bi se za isti ekran. Brojeve iz vježbe 1 ionako imaš u tablici.
Dodaj u blok forever, ispod dva mjerenja, lanac uvjeta koji postavlja smjer, i na kraju poziv funkcije prikaziSmjer. Napravi funkciju prikaziSmjer s jednim brojem, smjer, kao funkciju Svjetlo u semaforu.

Strelice prikazuje blok show arrow iz kategorije Basic, a točkicu nacrtaj blokom show leds.
Mrtva zona
Između −20 i 20 stupnjeva micro:bit ne pokazuje nijednu strelicu, nego točkicu. To područje zovemo mrtva zona. Bez nje bi strelica stalno skakala, jer ruka nikad nije potpuno mirna. Robot bi se trzao od svakog malog pokreta ruke.
Redoslijed je važan
Uvjeti su složeni u lanac: if, pa else if, pa opet else if… Micro:bit ih provjerava odozgo prema dolje i izvrši samo prvi koji je ispunjen. Ostale više ne gleda.
Što ako micro:bit nagneš i naprijed i ulijevo? Oba uvjeta su ispunjena, ali naprijed je u lancu prije lijevo, pa pobjeđuje strelica prema gore.
Predvidi
- pitch je −35, a roll 10. Što pokazuje ekran?
- pitch je 5, a roll 25. Što pokazuje ekran?
- pitch je −10, a roll −10. Što pokazuje ekran?
Isprobaj
U simulatoru micro:bit možeš nagnuti mišem. Zatim prenesi program na odašiljač i nagni ga rukom u svih pet položaja sa slike.
Vježba 3: Odašiljač šalje, prijemnik prima
Programi: odašiljač, treći korak, i prijemnik, prvi korak Tehnika: redovito slanje
Sada uzmi oba micro:bita. Odašiljač držiš u ruci i on šalje smjer. Prijemnik stoji na stolu i pokazuje što je primio.

Dva micro:bita, dva programa
Od sada imaš dva projekta, Odašiljač i Prijemnik. Lako se dogodi da program odašiljača završi na prijemniku. Zato:
- prije prijenosa pogledaj naljepnicu na micro:bitu koji je spojen na računalo;
- na računalo spajaj samo jedan micro:bit odjednom;
- u oba programa postavi broj radio grupe s naljepnice;
- odašiljač programiraj preko USB kabela, a zatim ga odspoji i spoji na battery pack.
Odašiljač: treći korak
Nastavljamo u projektu Odašiljač.
Dodaj u blok on start radio grupu s naljepnice. Dodaj još jedan blok forever, koji svake desetinke sekunde pošalje smjer.

Program može imati više blokova forever, i svi rade istodobno. Prvi mjeri i pokazuje strelicu, a drugi šalje. Zašto ne sve u jednom? Blok show arrow prikazuje strelicu 0,6 sekundi i tek onda pušta program dalje. Da je slanje u istom bloku, odašiljač bi slao samo jednom u 0,6 sekundi. Ovako drugi blok šalje svake desetinke, što god radio prvi.
Zašto smjer šaljemo stalno, a ne samo kad se promijeni? Ako se jedna poruka izgubi, sljedeća stiže već za desetinku sekunde. A brže od toga ne šaljemo, jer bi se poruke gomilale.
Odašiljač je sada gotov.
Prijemnik: prvi korak
Spoji na računalo micro:bit s naljepnicom prijemnik. Napravi novi projekt i nazovi ga Prijemnik. Najprije provjeravamo samo jedno: stiže li išta? Prijemnik zato pokaže svaki broj koji primi.

Predvidi
- Nagneš odašiljač naprijed. Koji broj pokazuje prijemnik?
- Odašiljač leži ravno na stolu. Koji broj pokazuje prijemnik?
- Što bi prijemnik pokazivao da ima drugu radio grupu?
Isprobaj
Nagni odašiljač u svih pet položaja i usporedi brojeve s tablicom dogovorenih poruka iz vježbe 2. Ako ne stiže nijedan broj, provjeri radio grupu u oba programa i jesu li programi na pravim micro:bitovima.
Zatim brzo mijenjaj nagib, naprijed, natrag, pa opet naprijed. Prati li prijemnik tvoju ruku ili kasni?
Vježba 4: Broj postaje strelica
Program: prijemnik, drugi korak Tehnika: brzo primi, polako prikaži
Nastavljamo u projektu Prijemnik. U vježbi 3 si vidio/la da prijemnik kasni kad brzo mijenjaš nagib. Zašto? Poruka stiže svake desetinke sekunde, a prikaz broja traje mnogo dulje. Poruke čekaju u redu, a prijemnik kasni sve više.
Rješenje: kad stigne broj, prijemnik ga samo zapamti. Prikazuje ga u bloku forever, i to uvijek najnoviji broj. Pravilo glasi: brzo primi, polako prikaži.
Promijeni blok on radio received: umjesto da prikaže broj, neka ga zapamti u varijabli smjer. Napravi funkciju prikaziSmjer, istu kao u odašiljaču, prema planu iz vježbe 2. Dodaj blok forever koji je poziva.

Funkcija je u oba programa ista. Zato oba micro:bita isti broj prikazuju istom strelicom.
Predvidi
- Nagneš odašiljač ulijevo. Što pokazuje prijemnik?
- Brzo mijenjaš nagib. Kasni li prijemnik sada?
- Nagneš odašiljač naprijed i isključiš battery pack. Što će pokazivati prijemnik?
Isprobaj
Prenesi program na prijemnik i upravljaj njime. Zatim isprobaj zadnje pitanje: nagni odašiljač naprijed i isključi battery pack.
Vježba 5: Ako te ne čujem, stajem
Program: prijemnik, treći korak Tehnika: sigurnosno pravilo
Kad isključiš odašiljač, prijemnik i dalje pokazuje zadnju strelicu, zauvijek. On ne zna da je odašiljač isključen, nego misli da je zadnja poruka još uvijek točna.
Zamisli da je prijemnik robot. Zadnja poruka je bila naprijed, a onda se odašiljaču ispraznila baterija. Robot bi vozio naprijed, sve do zida!
U radio igrama smo naučili da nitko ne javlja je li poruka stigla. Zato prijemnik mora sam primijetiti kad poruke prestanu stizati. Odašiljač šalje svake desetinke sekunde, pa u pola sekunde mora stići nekoliko poruka. Ako ne stigne nijedna, veza je prekinuta.

Prijemnik zato pamti kada je stigla zadnja poruka. Koristimo štopericu iz igre mirne ruke: blok running time (ms).
Nastavljamo u projektu Prijemnik. Dodaj u blok on radio received pamćenje vremena u novu varijablu zadnjaPoruka. Promijeni blok forever: poziv funkcije stavi u if / else.

running time − zadnjaPoruka je vrijeme koje je prošlo od zadnje poruke. Ako je to više od 500 ms, prijemnik pokaže X: stoj. Čim poruke ponovno počnu stizati, opet pokazuje strelicu.
Ovo pravilo zovemo sigurnosno pravilo. Mnogi dronovi i autići na daljinsko upravljanje imaju slično pravilo: kad izgube vezu s upravljačem, stanu ili se spuste.
Prijemnik je sada gotov.
Predvidi
- Uključiš prijemnik prije odašiljača. Što pokazuje prijemnik na početku? Zašto?
- Isključiš battery pack odašiljača. Koliko brzo prijemnik pokaže X?
- Hodaš s odašiljačem sve dalje od prijemnika. Što će se na kraju dogoditi?
Isprobaj
Isključi i uključi battery pack odašiljača i gledaj prijemnik. Zatim, uz dopuštenje voditelja, odnesi odašiljač što dalje i pogledaj kad se pojavi X.
Dodatni zadaci
- Istraži prag. Promijeni 20 u 10, pa u 40 (u odašiljaču, na sva četiri mjesta). S kojim brojem najlakše upravljaš? Što se događa kad je prag premalen, a što kad je prevelik? Zapiši koji ti broj najbolje odgovara.
- Dijagonale. Kad je odašiljač nagnut i naprijed i ulijevo, neka se pokaže kosa strelica (↖). Isto napravi za ostala tri kosa smjera. Pomoć: koristi blok and iz radio igara i nove brojeve od 5 do 8. Kose smjerove provjeri prije ravnih, jer pobjeđuje prvi ispunjeni uvjet. Funkciju prikaziSmjer promijeni na oba micro:bita.
- Tipke kao rezerva. Dok držiš tipku A, neka odašiljač šalje lijevo, a dok držiš B, desno, bez obzira na nagib. Pomoć: blok button A is pressed radi kao pin P1 is pressed iz igre mirne ruke.
Što slijedi?
Uskoro će prijemnik biti robot. Umjesto strelice pokretat će motore, a umjesto X-a će ih zaustaviti. Odašiljač ostaje isti.
Što smo naučili?
- Akcelerometar osjeti na koju stranu vuče sila teža, pa micro:bit zna je li nagnut i koliko.
- pitch je nagib naprijed-natrag, a roll nagib lijevo-desno. Blok rotation (°) vraća ga u stupnjevima.
- Naprijed daje negativan pitch, natrag pozitivan. Lijevo daje negativan roll, desno pozitivan.
- Mrtva zona između −20 i 20 stupnjeva brine da se strelica ne trza od malih pokreta ruke.
- U lancu uvjeta s else if izvrši se samo prvi ispunjeni uvjet, pa je redoslijed važan.
- Program može imati više blokova forever koji rade istodobno.
- Program može rasti korak po korak: svaki korak dodaje nešto novo, a prije sljedećeg ga testiramo.
- Odašiljač šalje smjer stalno, svake desetinke sekunde, a prijemnik ga brzo primi i polako prikaže.
- Sigurnosno pravilo: kad prijemnik pola sekunde ne čuje odašiljač, stane.