Detektor uljeza sa svjetlosnim senzorom

Svjetleće diode zaslona na micro:bitu služe i kao njegov svjetlosni senzor. Njime micro:bit, u svojoj okolini, može izmjeriti količinu svjetlosti kojoj je izložen.

Naredba za mjerenje intenziteta svjetlosti je light level i nalazi se u kategoriji Input kao i ostale naredbe kojima micro:bit prati ulazne informacije iz svoje okoline. Naredba light level vraća broj od 0 do 255 gdje se 0 odnosi na vrlo mali intenzitet svjetlosti, a 255 na izrazito veliki intenzitet svjetlosti.

Uvod

Ovim primjerom micro:bit svake 3 sekunde prikazuje vrijednost izmjerene svjetlosti.

Kad se u programu upotrijebi naredba light level, u simulatoru se prikaže klizač u gornjem lijevom uglu. Pomičući klizač možete virtualno mijenjati intenzitet svjetlosti.

Mjerenje svjetlosti može se prikazati i grafički naredbama plot bar graph of light level up to 255. Prvi parametar je izmjerena razina svjetlosti, a drugi je najveća moguća vrijednost svjetlosti (255).

Zadatak

Pretvorite micro:bit u detektor uljeza koji će korištenjem svjetlosnog senzora bilježiti koliko puta je netko otvorio ladicu u kojoj je vaš detektor smješten. Dok je micro:bit u ladici, izložen je maloj količini svjetlosti. Kad se ladica otvori micro:bit će svjetlosnim senzorom detektirati veću količinu svjetlosti.

Izradite program tako da micro:bit u mraku (u ladici) ništa ne prikazuje na ekranu. Kad se micro:bit izloži većoj količini svjetlosti (otvorena ladica), neka prikaže iznenađeno lice na zaslonu i zabilježi taj događaj pohranjujući ga u varijablu. U bilo kojem trenutku možete provjeriti koliko puta je ladica bila otvorena tako da pritisnete na tipkalo B. Prije izrade programa testirajte vrijednosti svjetlosti koje micro:bit očitava u zatvorenoj i otvorenoj ladici kako biste odredili granične vrijednosti.

Upute za izradu programa

1. korak

U ovom projektu morate detektirati i pohraniti broj otvaranja ladice, te kontrolirati ispravan rad i pravilno brojanje tog otvaranja. Za to će vam poslužiti dvije varijable koje možete nazvati Uljez i Detektor. Varijabla Uljez će služiti tome da se u nju pohranjuje broj otvaranja ladice te na početku programa mora imati vrijednost nula jer pravi uljez još nije otvorio ladicu. Varijabla Detektor služit će kao kontrola za ispravan rad i pravilno brojanje otvaranja ladice te i njoj na početku programa postavite vrijednost nula.

Obje varijable kreirajte u kategoriji Variables i smjestite ih u on start blok. Pri pokretanju, micro:bit morate smjestiti na dobro mjesto u ladici. Kako biste imali dovoljno vremena za postavljanje micro:bita u ladicu, pokretanje programa i zatvaranje ladice, dodajte na samom početku programa pauzu od 5 sekundi. Iz kategorije Basic dodajte pause(ms) i upišite 5000 kao argument naredbe.

2. korak

Detektor mora neprestano raditi i provjeravati razinu svjetlosti, zato se glavni dio programa mora odvijati u forever petlji. Postavite provjeru razine svjetlosti if then else blokom, kojom će micro:bit detektirati je li razina svjetlosti veća od zadane vrijednosti. U ovom primjeru ta vrijednost je postavljena na 25 jer je to, prema testiranju, srednja vrijednost intenziteta svjetlosti između zatvorene i otvorene ladice.

3. korak

Ako je zadani uvjet zadovoljen (detektirana je veća razina svjetla, odnosno netko je otvorio ladicu), u then dijelu bloka potrebno je dodati naredbu show icon i odabrati sličicu iznenađenog lica te povećati varijablu Uljez za 1. No, da se varijabla Uljez ne bi neprestano povećavala za 1 dokle god je ladica otvorena, upotrijebite varijablu Detektor kao kontrolu za izvršavanje tog dijela programa. Dodajte još jedan if then blok kojim će se provjeravati vrijednost varijable Detektor. Ako je vrijednost varijable Detektor jednaka nula (kao na početku programa), neka se prikaže sličica iznenađenog lica i vrijednost varijable Uljez poveća za jedan. U then dio tog bloka postavite stoga naredbu za prikaz iznenađenog lica na zaslonu i naredbu za povećanje vrijednosti varijable Uljez. Nakon toga promijenite vrijednost varijable Detektor u jedan (set Detektor to 1) čime ćete spriječiti da se povećanje varijable Uljez neprestano događa dok je ladica otvorena jer uvjet If Detektor = 0 više nije zadovoljen.

4. korak

Kada se micro:bit ponovno nađe u tami (zatvorenoj ladici), zadani uvjet if light level > 25 više nije istinit. Varijabla Detektor tada mora biti spremna za kontrolu novog otvaranja ladice, a prikaz na zaslonu micro:bita se mora obrisati. Dodajte novi if then else blok. U else dijelu toga bloka ponovno aktivirajte varijablu Detektor postavljanjem na vrijednost nula te dodajte naredbu clear screen.

5. korak

Kako biste provjerili koliko puta je netko otvorio ladicu pritiskom na oba tipkala istovremeno, u if dio bloka dodajte provjeru jesu li oba tipkala pritisnuta. Zatim u then dio bloka postavite naredbu za prikaz vrijednosti varijable Uljez. Za to upotrijebite show number naredbu iz kategorije Basic i varijablu Uljez iz kategorije Variables te je postavite kao argument naredbe za prikaz broja. Još ispod toga dodajte pauzu od 2 sekunde. Iz kategorije Basic dodajte pause(ms) i upišite 2000 kao argument naredbe. Imajte na umu da će micro:bit zabilježiti i vaše otvaranje ladice dok posežete za njime.

Program

Program za micro:bit v2

U slučaju da koristite novu verziju micro:bita koji sadrži ugrađeni zvučnik i logotip osjetljiv na dodir, izmijenite prethodni program tako da prilikom svakog otvaranja ladice i detekcije uljeza, micro:bit reproducira kratak zvuk. Provjeru koliko je puta ladica bila otvorena izvršite pritiskom na logotip.

Naredba logo is pressed nalazi se u Input kategoriji naredbi u dijelu micro:bit (V2). Naredba play tone Middle C for 1 beat nalazi se u Music kategoriji.