Svjetlosni senzor

1. Zadatak

Iskoristite svjetlosni senzor micro:bita za svjetlosnu signalizaciju micro:Maqueen robota. Izradite program kojim će micro:Maqueen pratiti liniju kada je u mraku s upaljenim RGB svjetlećim diodama, a kada ga izložite jakom osvjetljenju, većem od 30 (primjerice postavljanjem na prozor uz danje svjetlo ili korištenjem bljeskalice na mobitelu), gasi RGB diode i zaustavlja se. Neka prati liniju tako da vozi ravno kada su oba senzora za praćenje linije na crnoj podlozi. Kada vozi, neka sve 4 RGB diode svijetle bijelom bojom. Stazu možete preuzeti ovdje.

Rješenje

Objašnjenje

Iz Logic kategorije naredbi odaberite if then else naredbu te je postavite unutar forever bloka. U toj naredbi ćete provjeravati razinu svjetla i regulirati rad robota.

U if dio postavite operator veće od (>) koji ćete pronaći u kategoriji Logic. U lijevi dio operatora umetnite naredbu light level iz kategorije naredbi Input, a u desni dio upišite vrijednost 30. Time provjeravate je li razina svjetla veća od 30. Ako je taj uvjet zadovoljen, izvršit će se sve naredbe smještene u then djelu: motor all stop (robot se zaustavlja) te strip clear i strip show (gašenje RGB dioda) naredbe koje se nalaze u Neopixel kategoriji naredbi.

Kako bi mogli koristiti naredbe iz Neopixel kategorije, potrebno je dodati naredbu set strip to NeoPixel at pin P15 with 4 leds as RGB (GRB format) u on start blok.

Za praćenje linije napravite funkciju opcijom Make a Function u kategoriji Functions te ju nazovite Pracenje linije. Kako bi robot pratio liniju na način tražen u zadatku, potrebno je definirati sljedeće situacije:

  • Ako su oba senzora na crnoj podlozi, robot neka ide ravno.
  • Ako je desni senzor na crnoj liniji, a lijevi na bijeloj, neka se robot zakrene udesno kako bi s oba senzora ponovno bio na crnoj podlozi.
  • Ako je lijevi senzor na crnoj liniji, a desni na bijeloj, neka se robot zakrene ulijevo kako bi s oba senzora ponovno bio na crnoj podlozi.
  • Ako su oba senzora na bijeloj podlozi, robot neka ide unatrag.

Kada ste kreirali i dodali naredbe u funkciju Pracenje linije, naredbom call Pracenje linije u else dijelu if then else naredbe zadajte da robot prati liniju kada svjetlosni senzor detektira razinu svjetla manju od 30. Dodajte i naredbu strip show color white kako bi RGB diode svijetlile bijelom bojom kada robot vozi.

2. Zadatak

Izmijenite prethodni zadatak tako da robot prati liniju cijelo vrijeme, ali kada je razina svjetlosti manja od 50, pali sve 4 RGB diode u bijeloj boji i 2 prednje svjetleće diode. Kada je razina svjetlosti veća od 50, RGB diode i svjetleće diode su ugašene.

Rješenje

Objašnjenje

U forever petlji neka se nalazi naredba call Pracenje linije, izvan if then else naredbe, kako bi se vožnja robota odvijala cijelo vrijeme. U argument if dijela postavite light level < 50 naredbu kako bi se provjeravalo je li razina svjetla koju micro:bit detektira manja od 50. Ako je uvjet istinit, naredbama LEDlight left turn ON i LEDlight right turn ON neka robot uključi prednje svjetleće diode te naredbom strip show color white neka uključi 4 RGB diode.

Ako uvjet nije istinit, u else dijelu postavite naredbe za isključivanje svjetlećih i RGB dioda: LEDlight left turn OFF, LEDlight right turn OFF, strip clear, strip show.