Detektor zvuka

Micro:bit v2 sa svoje stražnje strane ima ugrađeni mikrofon kojim mjeri razinu jakosti zvuka okoline. S prednje strane se nalazi otvor koji propušta zvuk prema mikrofonu, a mikrofon indikator svijetli kada micro:bit mjeri razinu zvuka.

Naredba za mjerenje razine zvuka sound level nalazi se u kategoriji Input kao i ostale naredbe kojima micro:bit prati ulazne informacije iz svoje okoline. Naredba sound level vraća broj od 0 do 255 gdje se 0 odnosi na najnižu glasnoću zvuka, a 255 na najvišu glasnoću zvuka.

Uvod

Ovim primjerom micro:bit svake 2 sekunde prikazuje vrijednost izmjerene glasnoće zvuka okoline.

Kad se upotrijebi naredba sound level, u simulatoru se prikaže virtualni mikrofon. On je klizač kojim možete, pomičući ga, virtualno mijenjati glasnoću zvuka.

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

Zadatak

Pretvorite micro:bit u detektor zvuka koji će pratiti glasnoću zvuka u prostoru. Na ekranu se cijelo vrijeme grafički prikazuje mjerenje glasnoće zvuka. Ako dulje od 10 sekundi micro:bit očitava da je glasnoća zvuka viša od postavljene granične vrijednosti, upozorit će zvučnim signalom te će se na ekranu prikazati uskličnik. Zvučni signal se ponavlja svake 2 sekunde sve dok micro:bit ne izmjeri da se glasnoća smanjila. Čim se glasnoća zvuka smanji, na ekranu se ponovno grafički prikazuje mjerenje glasnoće zvuka.

Prije izrade programa testirajte vrijednosti glasnoće zvuka koje micro:bit očitava u prostoru u kojem se nalazite kako biste odredili graničnu vrijednost.

Upute za izradu programa

1. korak

Kako bi micro:bit cijelo vrijeme mjerio glasnoću zvuka, sve naredbe stavite u forever petlju. Prvo iz Logic kategorije uzmite if then else naredbu kojom ćete provjeriti je li glasnoća zvuka koju micro:bit mjeri veća od granične vrijednosti. Ovdje je granična vrijednost 180, ali možete ju prilagoditi kako vama više odgovara. U uvjetu if then else naredbe provjeravate je li izmjerena razina zvuka (sound level) veća od 180 pomoću naredbe usporedbe iz Logic kategorije.

2. korak

Detektor mora cijelo vrijeme grafički prikazivati izmjerene vrijednosti zvuka. U else dio stavite plot bar graph of sound level up to 255 naredbu koju možete pronaći u Led kategoriji naredbi. Sada će micro:bit na svom ekranu grafički prikazivati izmjerenu količinu zvuka u slučaju kada je glasnoća manja od 180.

3. korak

Ako je zadani uvjet zadovoljen (detektirana glasnoća zvuka je veća od 180), u then dijelu bloka potrebno je prvo zapamtiti koje je početno vrijeme kako bi se pratilo koliko dugo se održala glasnoća zvuka veća od 180. To ćete pratiti pomoću varijable koju izradite opcijom Make a Variable unutar Variables kategorije te ju imenujte Početak. Sada u then dijelu bloka postavite varijablu Početak na running time (ms). Naredba running time (ms) nalazi se u Input kategoriji u dijelu more te vraća proteklo vrijeme u milisekundama od trenutka pokretanja micro:bita.

4. korak

Iz Loops kategorije uzmite naredbu while do koja će izvršavati naredbe sve dok je glasnoća veća od 180. U while petlju prvo stavite plot bar graph naredbu kako bi se i u ovom slučaju na ekranu prikazivale grafičke vrijednosti izmjerenog zvuka, barem dok to nije duže od 10 sekundi kako ćete vidjeti u idućem koraku.

5. korak

Kako biste provjerili je li prošlo 10 sekundi od trenutka kada je glasnoća postala viša od 180, nakon plot bar graph naredbe, dodajte if then naredbu. U uvjetu te naredbe provjeravate je li trenutno izmjereno vrijeme running time (ms) veće ili jednako od varijable Početak uvećane za 10 sekundi, odnosno 10000 milisekundi.

6. korak

U then dio naredbe sada je potrebno dodati naredbu za reproduciranje zvuka i prikaz sličice koji će služiti kao upozorenje da je već 10 sekundi glasnoća zvuka previsoka. Iz Music kategorije odaberite naredbu start melody ba ding repeating once te naredbom show leds izradite sličicu uskličnika. Dodajte još pauzu kako bi se melodija ponavljala svake dvije sekunde. Kada se glasnoća zvuka smanji, odnosno nakon izlaska iz while petlje, potrebno je isključiti zvučni signal naredbom stop all sounds te izbrisati ekran naredbom clear screen.

Program