o.O wtFAQ – We Tinker, Fix and Question
◀ 6.3 Micro:bit kontroler za Maqueen

6.4 Signalizacija svjetlima
...da te bolje vidim!

Čemu služe svjetla na vozilima?

Danas se igramo svjetlima na vozilu – ali ne samo zato što lijepo izgledaju, nego zato što vozilu pomažu pričati s nama i s okolinom. Svjetla nam kažu ide li vozilo naprijed ili nazad, skreće li lijevo ili desno, je li stalo ili upozorava na opasnost.

Na pravim autima prednja svjetla osvjetljavaju cestu, stražnja i stop‑svjetla govore kada kočimo, a žmigavci pokazuju u kojem smjeru skrećemo. Na Maqueenu ćemo raditi isto: obična LED svjetla koristit ćemo kao farove, a šarene NeoPixel RGB lampice kao posebne signale za kočenje, vožnju unazad i skretanje. Na taj način učimo kako robot može svjetlima jasno pokazati što radi i što će sljedeće napraviti.

Gdje su svjetla na Maqueenu?

Na prednjem dijelu Maqueena su dvije velike crvene LED – mogu biti samo ugašene ili upaljene.

Na donjoj strani, između kotača, nalaze se 4 male NeoPixel RGB LED‑ice (WS2812) koje mogu svijetliti u bilo kojoj boji i raditi efekte.

NeoPixeli su spojeni na micro:bit pin P15, pa ih programiramo preko posebne NeoPixel ekstenzije, dok se prednje LED‑ice pale i gase Maqueen blokovima.

LED, RGB LED i NeoPixel

  • Obična LED: jedna boja (npr. crvena, bijela), ima samo stanja upaljeno ili ugašeno, upravljamo samo jačinom svjetla (PWM) i uključi/isključi.
  • RGB LED: u jednoj lampici su tri LED‑ice (crvena, zelena, plava), pa miješanjem tih boja dobivamo mnogo različitih boja; potrebno je više žica/pinova za upravljanje (R, G, B).
  • NeoPixel RGB LED (WS2812): RGB LED s ugrađenim malim čipom; sve boje i efekte šaljemo preko samo jedne žice (data), mogu se nizati i pojedinačno adresirati u programskom kodu.

Zadatak 1:

Na početku ćemo pokazati mogućnosti NeoPixel RGB LED-ica – osvjetljavati ćemo ih nasumičnim bojama!

Zadatak 2:

U zadatku spajamo senzore, motore, obične LED i NeoPixele u jednog skoro pametnog robota:

  • Maqueen kreće naprijed s upaljenim prednjim crvenim LED svjetlima kao auto.
  • Ultrazvučni senzor stalno mjeri udaljenost; kad vidi prepreku bliže od 10 cm, Maqueen se zaustavlja i počinje dio izbjegavanja prepreke.
  • Zatim se uključe zadnji RGB NeoPixeli na dnu: trepću u nekoj boji (npr. narančasta i crvena) i robot se vozi unazad.
  • Nakon toga Maqueen slučajnim odabirom odluči hoće li se okrenuti lijevo ili desno, i dok se okreće trepće žuto samo lijevim ili samo desnim donjim RGB pixelićima kao žmigavcima.
  • Kad završi skretanje, Maqueen kreće naprijed i cijeli se proces ponavlja.

Posebnost današnjeg zadatka je uredan i čitljiv program
Iz tog razloga ćemo definirati funkcije.

Što su to funkcije u programiranju?
Funkcije su kao mali pomoćnici u programu: to su blokovi naredbi koje skupimo na jedno mjesto i damo im ime. Kada nam taj zadatak opet zatreba, samo pozovemo funkciju umjesto da ponovo pišemo sve naredbe.
Funkcija ima ime (npr. nazad, lijevo, desno) koje govori što radi.
U tijelu funkcije se nalaze upute koje se izvrše svaki put kad funkciju pozovemo – kao recept koji svaki put vodi istim koracima.
Funkcija može primati parametre (npr. broj treptaja) – to su mjesta u koja upisujemo vrijednosti da bi se isti zadatak izvršio malo drugačije (kraće, duže, brže...)
Na taj način program postaje čitljiviji i lakši za mijenjanje: ako želimo promijeniti kako Maqueen ide nazad, mijenjamo samo funkciju nazad, a ne tražimo isti kod na više mjesta u programu.

Funkcije s parametrima (nazad, lijevo, desno)

Definirane su tri funkcije: nazad, lijevo i desno – svaka od njih zna kako upaliti odgovarajuće RGB LED‑ice i pokrenuti motore u tom smjeru.

Svaka funkcija prima parametar broj treptaja; taj broj određuje koliko puta će RGB pikseli trepnuti i koliko dugo će se Maqueen kretati u tom smjeru (što veći broj, to duže).

U glavnom dijelu programa samo pozovemo funkcije, npr. call nazad 4 ili call lijevo 3, što program čini preglednim i lakšim za razumijevanje.

uredan kôd

Same funkcije su definirane u zasebnim blokovima, a rade na sličan način:

  • pokreni motore u smjeru koji funkcija zahtijeva,
  • u petlji ponovi broj puta treptanje (pali i gasi) LED dioda,
  • zaustavi motore.

Dodatna pitanja i zadaci:

  • Promijeni boje zadnjih RGB piksela ovisno o udaljenosti: daleko = zelena, srednje = žuta, jako blizu = crvena.
  • Dodaj zvuk: kad je prepreka bliže od 10 cm, osim svjetla, Maqueen kratko zasvira alarm na zvučniku.
  • Umjesto nasumičnog skretanja, broji koliko puta je skrenuo lijevo i desno i pokušaj napraviti program da bude otprilike pošten (jednako često lijevo i desno).

Dodatna pitanja i zadaci:

  • Izmijeni program na kontroleru tako da ispisuje strelice u smjeru u kojem treba Maqueen skrenuti.

ligtbulb Što smo naučili?

  • Gdje se na Maqueenu nalaze prednje LED lampice i donje NeoPixel RGB LED‑ice te čemu služe.
  • Razliku između obične LED, RGB LED i NeoPixel RGB LED, te zašto su NeoPixeli praktični za šarene efekte s jednom podatkovnom žicom.
  • Kako povezati motore, ultrazvučni senzor udaljenosti, LED svjetla i funkcije s parametrima da Maqueen samostalno reagira na prepreke i jasno pokazuje što radi svojim svjetlima.
◀ 6.3 Micro:bit kontroler za Maqueen