Bežično pokretanje micro:Maqueena drugim micro:bitom

Zadatak

Izradite program kojim ćete upravljati micro:Maqueen robotom pomoću drugog micro:bita. Drugi micro:bit neka bude kao daljinski upravljač koji će pokretati robot pritiskom na tipkala. Pritiskom na tipkala A i B zajedno robot neka vozi ravno. Pritiskom na tipkalo A neka skrene lijevo, a pritiskom na tipkalo B desno. Micro:bit neka šalje poruke u obliku riječi: ravno, lijevo i desno.

Rješenje – micro:bit upravljač

Objašnjenje

Micro:bit koji služi kao daljinski upravljač zapravo komunicira sa micro:bitom koji se nalazi na micro:Maqueen robotu i tako upravlja radom micro:Maqueena. Micro:biti međusobno mogu komunicirati radio vezom tako da si šalju poruke koje mogu biti u obliku brojeva ili znakovnog niza. U ovom zadatku će se slati poruke u obliku znakovnih nizova.

Na početku je potrebno definirati radio kanal na kojem će micro:biti komunicirati. Bitno je da pošiljatelju i primatelju postavite istu radio grupu jer inače neće moći razmjenjivati poruke. Iz kategorije Radio odaberite naredbu radio set group 1 te ju postavite unutar on start naredbe. U forever naredbu postavite naredbu if then iz kategorije Logic. Pomoću if then naredbi provjeravat će se koje tipkalo je pritisnuto i ovisno o tome će se robotu poslati poruka. U argument naredbe if then postavite naredbu on button A+B is pressed. Podsjetite se logike koju koristite za upravljanje robota:

·         Poruka ravno označava da robot ide ravno.

·         Poruka lijevo označava da robot ide lijevo.

·         Poruka desno označava da robot ide desno.

Za slanje poruke, iz kategorije Radio odaberite naredbu radio send string te ju postavite unutar if then naredbe. U argument naredbe radio send string upišite riječ ravno. Sada, kada istovremeno pritisnete tipkalo A i B, micro:bit će poslati poruku ravno drugome te će robot voziti ravno. Za svaku poruku imate zasebnu if then naredbu. Ostatak programa izradite prema sljedećim smjernicama:

·         Tipkalo A šalje poruku lijevo te se tada robot zakreće u lijevo.

·         Tipkalo B šalje poruku desno te se tada robot zakreće u desno.

Rješenje – micro:Maqueen

Objašnjenje

U programu za robot, odnosno micro:bit koji upravlja njime, radio grupa mora biti ista kao i kod micro:bita koji šalje poruke. Iz Radio kategorije zato odaberite naredbu radio set group 1 te ju postavite unutar on start naredbe. Iz iste kategorije odaberite blok on radio received receivedString te ga postavite u prostor za programiranje. Sve što se nalazi unutar ovog bloka će micro:bit raditi kada primi neku poruku koja je spremljena u varijabli receivedString.

Kako postoje 3 različite poruke koje micro:bit može primiti, potrebno je isprogramirati 3 različita kretanja robota ovisno o primljenoj poruci. Unutar bloka on radio received receivedString postavite naredbu if then iz kategorije Logic jer njome provjeravate koju poruku je micro:bit primio. U argument if then naredbe postavite operator jednakosti za znakovne nizove (oba argumenta imaju navodnike). U lijevi dio operatora postavite varijablu receivedString na način da kliknete i prenesete varijablu receivedString iz bloka on radio received receivedString. Upišite riječ ravno u desni dio operatora jednakosti za znakovne nizove te unutar then dijela naredbe postavite naredbu motor all move Forward at speed 100 iz kategorije Maqueen. Zatim dodajte pauzu od 10 milisekundi te naredbu motor all move Forward at speed 0 kako bi zaustavili robota. U slučaju da ne dodate dvije prethodne naredbe, robot bi se cijelo vrijeme kretao prema naprijed, a na ovaj način ste to ograničili na 10 milisekundi. Time ste definirali kako se robot mora kretati ako dobije poruku ravno.

Za ostale poruke koje robot može primiti kopirajte prethodni if then blok 2 puta i u svakom učinite potrebne izmijene (vrijednost primljene poruke i način kretanja robota). Kad robot primi poruku lijevo treba se zakrenuti u lijevo pa lijevi kotač miruje, a desni se okreće naredbom motor right move Forward at speed 100. Kada se zakreće u desno, desni kotač miruje, a lijevi se okreće.