7 minute read

BBC micro:bit [35]

Next Article
Čudo predatora

Čudo predatora

Poštovani čitatelji, u prošlom je nastavku kodiran prvi dio pjesme Jingle Bells tako da ga BBC micro:bit može otpjevati. Radi vježbe, predloženo je da samostalno kodirate drugi dio. Na Slici 35.1. možete pronaći rješenje koje nije savršeno, ali je dobra osnova za daljnju obradu.

no > pritisnuto). Kod metode “is pressed()” BBC micro:bit neprekidno provjerava je li određena tipka stalno pritisnuta. Razlika je očita tek kod izvođenja programa jer dok na BBC micro:bitu držite pritisnutu tipku B – iz zvučnika se opetovano čuje glas b, a dok držite pritisnutu tipku A –glas a iz zvučnika se čuje samo jednom. Kako bi se nanovo izgovorio glas a potrebno je otpustiti i opet pritisnuti tipku A.

Advertisement

Možebitni pritisak tipke ispituje se uvjetom if (ako) koji se dodatno može proširiti tako da istovremeno ispituje jesu li obje tipke A i B pritisnute. Pri tome je moguće koristiti binarne logičke operatore (o binarnim logičkim operatorima raspravljalo se u 634. i 636. broju ABC tehnike). U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.3.

Velika novina na pločici BBC micro:bita v.2. je kapacitivna tipka (LOGO). U nastavku ćete naučiti kako ju programirati, ali ne samo nju, već i one uobičajene tipke A i B.

Tipke

Najprije slijede primjeri za tipke A i B. Postoji nekoliko metoda koje se odnose na te tipke. U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.2.

Kod tipke A u ovom je primjeru korištena metoda “was pressed()”, dok je kod tipke B korištena metoda “is pressed()”

Kad se koristi metoda “was pressed()” tada BBC micro:bit primjećuje pritisak na tipku samo u trenutku kad se promijeni stanje (otpušte-

Također, uvjet if moguće je proširiti dodavanjem drugog uvjeta koji se imenuje s elif , a usto može i treći uvjet kojega se imenuje s else. Dobro je znati da su moguće i druge kombinacije kao na primjer više uzastopnih uvjeta elif. U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.4.

Nakon otpremanja začuje se ton frekvencije 1000 Hz. Pritiskom tipke A ton se mijenja u 200 Hz i traje sve dok se ta tipka drži pritisnutom. Otpuštanjem tipke A nanovo se čuje ton frekvencije 1000 Hz. Pritiskom tipke B program prekida (break) beskonačnu petlju while True te izlazi iz nje pa nailazi na naredbu koja zaustavlja izvođenje bilo kojeg tona – music.stop().

Vratimo se metodama koje se koriste kod tipki jer postoji još jedna metoda, “button_a.get_pre-

Slika 35.3. Tekst se na displeju BBC micro:bita pojavljuje samo kad su istovremeno pritisnute tipke A i B

Dvije tipke A i B, odnosno njihove uloge, moguće je nadograditi dodavanjem vanjskih tipki jer su dostupne i na rubnom priključku pa je tako tipka A u sprezi s izvodom P5, a tipka B s izvodom P11. Tvornički je predodređeno da su ove tipke otporničkog tipa. U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.6.

Slika 35.4. U ovom su programu postavljena tri uvjeta

Nakon otpremanja, na displeju BBC micro:bita se ispiše broj 1. Pritisnete li tipku A, ispiše se broj 0. Isto će se desiti ako premosnicom spojite GND i P5 i tako simulirate tipku (PAŽNJA! Kod spajanja premosnice, dobro naciljajte izvod P5 rubnog priključka jer u ovom trenutku nije poželjno da prema masi spojite neki drugi, susjedni izvod). Zašto se na displeju pojavljuje broj 1 kad tipka nije pritisnuta? Zato jer je izvod P5 digitalnog tipa s ugrađenim pull-up otpornikom od 10 kΩ (isto važi i za izvod P11).

Slika 35.5. Metoda get_presses() (dohvati pritiske) sses()”. U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.5.

Dok traje pauza (sleep) od 5 sekundi BBC micro:bit broji koliko puta pritišćete tipku A. Nakon isteka zadanog vremena iz zvučnika se na engleskom jeziku čuje broj koji odgovara broju vaših pritisaka. Ovdje valja svratiti pozornost na činjenicu da je dobiveni broj u stvari numerička vrijednost, a metoda say zahtijeva niz znakova. Radi toga potrebno je pretvoriti dobiveni broj u karakter (u riječ). Za to se unutar argumenta koristi naredba str (to je skraćeno od string, a znači – niz).

Ako radite na BBC micro:bitu v.2. tada možete program sa Slike 35.6. prepraviti kako biste ga iskoristili za spajanje tipki (ili simulirali tipke premosnicama) kod izvoda P0, P1 i P2. Naime, ovi izvodi imaju ugrađene pull-down otpornike od 10 MΩ (o pull-up i pull-down otpornicima raspravljalo se u 640. i 653. broju ABC tehnike). Isprobajte! U gornjem programu umjesto pin5 upišite pin0. Nakon otpremanja, na displeju BBC micro:bita v.2. ispisat će se broj 0. Premosnicom spojite izvod P0 s izvodom 3V. Na displeju će se prikazati broj 1.

Otprije znate (ABC tehnike broj 657.) da se prva tri izvoda kod ove nove verzije BBC micro:bita mogu ugoditi tako da rade kao kapacitivne tipke. U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.7.

Nakon otpremanja, kažiprstom dodirujte redom LOGO, P0, P1 i P2. Na displeju BBC micro:bita pojavljivat će se strelica koja će ukazivati na kapacitivnu tipku koju ste dodirnuli posljednju.

Za povratak u otpornički način trebate naredbu – pin0.set_touch_mode(pin0.RESISTIVE).

Slika 35.6. Tipka A je u sprezi s izvodom P5 rubnog priključka gdje se za provjeru stanja koristi metoda read_digital()

Osim kod navedenih izvoda P0, P1 i P2 tipke je moguće dodati i na neke druge izvode. U tablici na Slici 35.8. pogledajte svojstva izvoda kako biste se kod programiranja lakše snalazili.

Slika 35.7. LOGO je predodređen kao kapacitivna tipka, dok P0, P1 i P2 to nisu pa u argumentima prozvanih izvoda treba navesti parametar – CAPACITIVE

Slika 35.9. Kako bi tipka spojena na pin3 obavljala zadanu funkciju treba isključiti displej BBC micro:bita

Nakon otpremanja, premosnicom spojite izvode 3V i P3 (raspored izvoda rubnog priključka možete pronaći ovdje: https://tech.microbit.org/ hardware/edgeconnector/ ). Iz ugrađenog zvučnika BBC micro: bita v.2. trebali biste čuti zvuk. Tipke koje želite dodati na izvode rubnog priključka BBC micro:bita moraju biti spojene preko vanjskih pull-down otpornika od 10 kΩ. Naravno, za izvode kod kojih je taj otpornik ugrađen to ne morate. Najbolje je da sve to isprobate, sastavite minijaturni sintesajzer prema Slikama 35.10. do 35.12.

Slika 35.8. Tablica prikazuje izvode koje biste mogli koristiti za tipke, s time da obratite pozornost na njihove značajke kako biste u MicroPythonu znali izabrati odgovarajuću naredbu. (Napomena! Preporuka je da se pin19 i pin20 ne koriste za drugo osim za I2C komunikaciju.)

Ovdje valja istaknuti kako tipke koje ugradite na izvode koji su u sprezi s displejom BBC micro:bita neće raditi, no displej je moguće isključiti pa to isprobajte. U MP Editoru prepišite te otpremite i isprobajte program, Slika 35.9.

Minijaturni sintesajzer

Slika 35.11. Montažna shema minijaturnog sintesajzera. Žute tipke su osnovne note (na klaviru su to bijele tipke), a zelene su povisilice (na klaviru su to crne tipke)

Na Slici 35.13. predstavljen je prvi dio koda, onaj koji obuhvaća osnovne note.

Kako je vidljivo, u programu je korištena mogućnost upisivanja frekvencije (music.pitch), a ne nota (music.play). Zašto tako? Zato jer naredba music.play ne predviđa povisilice, a to će vam poslije zatrebati.

Zašto je tipka koja je spojena na izvod pin5 programirana drugačije od ostalih tipki? Otprije znate da je taj izvod u sprezi s tipkom A i da ima ugrađen pull-up otpornik. To znači da će se nota Mi (330 Hz) čuti dok tipka nije pritisnuta. Radi toga, programski treba zaokrenuti logiku. Kako bi se to postiglo najprije valja stanje tipke učitati u promjenljivoj “pritisnuto”, a potom logičkim operatorom not “zaokrenuti” rezultat. Drugim riječima, dok tipka nije pritisnuta dobiva se logičko stanje 1, ali zbog negiranja to se stanje odmah pretvara u 0. Program prepišite te ga otpremite i isprobajte.

Nakon otpremanja, redom pritišćite žute tipke. Ako je sve kako valja, iz zvučnika ćete čuti tonove četvrte oktave, Do, Re, Mi, Fa, So, La i Ti te Do pete oktave.

Sad je red na vama, radi vježbanja proširite program tako da dodate i zelene tipke za povisilice.

Kako izračunati frekvencije tonova?

Uobičajeno je da oktava sadrži ukupno dvanaest takozvanih polutonova (sedam osnovnih nota i pet povisilica), Slika 35.14.

To su note koje imaju fiksnu frekvenciju i matematički su međuovisne, a izračunavaju se prema osnovnoj noti kojoj je konvencijom utvrđena frekvencija od 440 Hz (La iz četvrte oktave). Svaka je nota udaljena od La4 za cijeli broj polutonova te se za svakih dvanaest polutonova jedne oktave frekvencija podupla. Drugim riječima, radi se o geometrijskom nizu čije su točke međusobno udaljene za 21/12 iz čega proizlazi da se frekvencija note koja je udaljena n polutonova od osnovne note da izračunati formulom: f = 440 × 2n/12 herca (Hz)

Naprimjer, kolika je frekvencija note Do5? Za to treba od note La4 otići tri polutona naviše: La > La# > Ti > Do ili matematički: f = 440 × 23/12 što je približno 523,25 Hz (za izračunavanje koristite

Još jedan primjer. Kolika je frekvencija note Do4? Za to treba od note La4 otići devet polutonova naniže ili matematički: f = 440 × 2-9/12 što je približno 261,63 Hz.

Podsjetnik: if metoda: elif metoda: else: > programski uvjeti. Nakon dvotočke treba u novom redu upisati kôd za ono što slijedi, ako je uvjet iz metode ispunjen; button_a.was_pressed() > metoda se koristi s if kako bi se ispitalo je li tipka ikad pritisnuta; button_a.is_pressed() > metoda se koristi s if kako bi se ispitalo je li tipka stalno pritisnuta; button_a.get_presses() > metoda kojom se ispituje koliko je puta tipka pritiskana; break > izlaz iz beskonačne petlje while True. Nastavak koda valja pisati bez uvlake na repu programa; pin5.read_digital() > provjeravanje digitalnog stanja izvoda rubnog priključka; if pin_logo.is_touched(): > samo v.2, ispituje je li LOGO dodirnut (pritisnut); if pin0.is_touched(): > samo v.2, ispituje je li izvod 0 dodirnut (pritisnut). Važi i za izvode pin1 i pin2; pin0.set_touch_mode(pin0.CAPACITIVE) > izvodi pin0, pin1 i pin2 tvornički su ugođeni za otpornički tip tipke, ovom se metodom pretvaraju u kapacitivni tip tipke; pin0.set_touch_mode(pin0.RESISTIVE) > vraćanje izvoda pin0 (važi i za pin1 i pin2) u otpornički tip tipke; not > logički operator.

Za ove ste vježbe trebali:

• BBC micro:bit v.2. (ili v.1.)

• rubni priključak

• USB-kabel

• zvučnik sa spojnim žicama (za v.1.)

• eksperimentalnu pločicu na ubadanje full+

• tipke, 13 komada (pet komada sa zelenim kapama, osam komada sa žutim kapama)

• otpornike 10 kΩ, 9 komada

• plave premosnice M – M, 3 komada

• plavu premosnicu M – F, 1 komad

• crvene premosnice M – M, 10 komada

• crvenu premosnicu M – F, 1 komad

• žute premosnice M – F, 8 komada

• zelene premosnice M – F, 5 komada. Marino Čikeš, prof.

This article is from: