10 minute read

BBC micro:bit [32

KODIRANJE

Poštovani čitatelji, u prošlom ste nastavku upoznali noviju inačicu pločice BBC micro:bita – v.2 te vezano za nju saznali ste koje su novosti u MC Editoru. Iako je programirati preko tog editora vrlo jednostavno, ipak je došlo vrijeme da učinite korak više, odnosno došlo je vrijeme za programiranje u MicroPythonu.

Advertisement

MicroPython

To je jedan od najljepših programskih jezika, odličan za podučavanje. U kombinaciji s elektroničkim sustavima postaje nevjerojatno učinkovit, i što je možda najvažnije, postaje vrlo zabavan. Da je stvarno učinkovit, imali ste prilike isprobati na primjeru brzine odziva LED-displeja BBC micro:bita koji je obrađen u broju 653. ABC tehnike, a da je zabavan… otkrijte u nastavcima ove serije. Za vježbanje i razvijanje projekata u MicroPythonu preporuka je da koristite New beta Python Editor, uređivač kodova za jednostavno i učinkovito programiranje BBC micro:bita. Pronaći ćete ga na stranici https://python.microbit.org/v/2. Čim se stranica otvori bit će vam ponuđena nova inačica, Slika 32.1. Izaberite ju klikom na Try the beta. Otvorit će vam se novi prozor, kao na Slici 32.2. Neka vas beta ne demotivira, neće još dugo biti beta. Prema službenim stranicama, do kraja 2022. godine bit će objavljena stabilna inačica. Prvi koraci Priključite BBC micro:bit preko USB-kabela na USB-priključak računala. Na sučelju MP Editora kliknite na programsku tipku Send to micro:bit. Pojavit će se skočni prozor kao na Slici 32.3. Kliknite Next, pojavit će se obavijest s daljnjim uputama, Slika 32.4. Kliknite Next, pojavit će se novi skočni prozor, Slika 32.5. Ako ste maloprije spojili BBC micro:bit v.1. pojavit će se poruka kao na Slici 32.6. Nakon ažuriranja kliknite na Try again pa će se dalje sve odvijati kako slijedi u tekstu. Ako ste maloprije spojili BBC micro:bit v.2. (ili ažurirani v.1.) pojavit će se skočni prozor kao na Slici 32.7. koji vas obavještava da je otpremanje programa u tijeku. Nakon otpremanja, na LED-displeju BBC micro:bita nacrta se srce te se ispisuje poruka Hello. Zašto tako? Izvodi se program koji je ponuđen od samog pokretanja MP Editora, Slika 32.8.

Analiziranje ponuđenog koda Napomena! Sve što se nalazi iza znaka # jest komentar koji nema utjecaja na kôd. Autor programa ga koristi kao podsjetnik i može upisati što god poželi (i vi ćete koristiti komentare kad vam budu zatrebali). Radi toga, u ovoj se analizi komentari neće uzimati u obzir.

Slika 32.1. Slika prikazuje stariju inačicu Python Editora. Novu inačicu izaberite klikom na Try the beta - crvena strelica

Slika 32.2. Sučelje nove, beta inačica MicroPython Editora

Slika 32.4. Skočni prozor vas upućuje da trebate izabrati pločicu BBC micro:bita koju ste upravo priključili Slika 32.5. U ovom skočnom prozoru obilježite ime pločice tako da poplavi te kliknite na “Povezivanje”

Slika 32.6. Pojavi li se poruka kao na slici, morate ažurirati firmver. Kliknite na mjesto označeno crvenom strelicom i slijedite upute.

Slika 32.3. Kad prvi put spajate pločicu BBC micro:bita pojavit će se upute o tome što trebate učiniti prije otpremanja programa

Prva linija koda (2):

from microbit import*

Slika 32.7. Kod prvog spajanja pločice otpremanje programa će potrajati malo duže od uobičajenog

Slika 32.8. Ponuđeni programa u MP Editoru Traži se od MicroPythona da učita sav raspoloživi kôd za rad s BBC micro:bitom. Taj se kôd nalazi u unaprijed pripremljenom modulu koji sadrži biblioteku (library) koju je stvorio autor ovog editora. Kad nakon imena biblioteke upišete import (uvoz), kazujete MicroPythonu da želite koristiti baš tu biblioteku, a znak * znači da želite sve iz nje (napomena, na tipkovnici računala je to znak *). Drugim riječima, from microbit import* znači – uvezi sve iz biblioteke microbit (jer to želim moći koristiti!). Ovdje valja napomenuti da se uvoz bilo koje biblioteke uvijek upisuje na samom početku programa. Druga linija koda (6):

while True:

Kôd koji se nalazi u petlji while True ponavljat će se zauvijek (slično bloku Forever u MC Editoru). Ovdje valja primijetiti da je kôd koji slijedi istaknut svijetloplavom pozadinom, što ga povezuje i čini cjelinu s while True. Treća linija koda (7):

display.show(Image.HEART)

Ova se linija koda sastoji od objekta. metode(argumenta). Objekt je u ovom slučaju display i upućuje na korištenje stvarnog LED-displeja na pločici BBC micro:bita. Nakon obavezne točke (.) slijedi metoda djelovanja na taj objekt, u ovom slučaju show, što na engleskom znači – prikaži. Slijedi argument koji obavezno mora biti u zagradama. Tu se obrazlaže (argumentira) što treba prikazati, u ovom slučaju proziva se popis gotovih sličica – Image, gdje se nakon obavezne točke (.) odabire sličica srca – HEART. Drugim riječima, display. show(Image.HEART) znači – na displeju (objekt) prikaži (metoda) sličicu srca (argument). Četvrta linija (8):

sleep(1000)

Ova naredba zaustavlja daljnje izvođenje programa u trajanju od 1000 milisekundi (jedna sekunda). Peta linija (9):

display.scroll(‚Hello‘)

Ovdje važi sve što je rečeno kod treće linije koda, ali vrijedi ponoviti. Ova se linija koda sastoji od objekta.metode(argumenta). Objekt je u ovom slučaju display i upućuje na korištenje stvarnog LED-displeja na pločici BBC micro:bita. Nakon obavezne točke (.) slijedi metoda djelovanja na taj objekt, u ovom slučaju scroll, što na engleskom znači – pomiči. Iza toga slijedi argument koji obavezno mora biti u zagradama. Tu se obrazlaže (argumentira) što treba prikazati, a u ovom se slučaju unutar navodnika upisuje željeni string, na primjer – ‚Hello‘. Drugim riječima, display.scroll(‚Hello‘) znači – na displeju (objekt) pomiči (metoda) string Hello (argument). Napomena! String (od engleskog – niz, kompozicija) su karakteri, odnosno simboli, slova, znakovi… Ima svojstvo da eventualno upisane brojeve tretira kao simbole, a ne kao vrijednosti. Kad se argument piše bez navodnika, javlja se greška. Ipak, bez navodnika može se upisati broj ili ime promjenljive. Upisani broj bit će prikazan na LED-displeju i tretirat će se kao stvarni broj pa će se s njime, u slučaju potrebe, negdje u nekoj drugoj liniji programa moći izvesti matematički računi. Kad se pak upisuje ime promjenljive, ona najprije mora biti iskazana u nekoj prethodnoj liniji programa. Radi vježbanja, prepravite program tako da se na LED-displeju pojavljuju drugačiji argumenti, na primjer sličica kišobrana i vaše ime. Mala pomoć. U postojećem programu izbrišite HEART te upišite riječ UMBRELLA. Isto tako, izbrišite Hello te upišite vaše ime.

Greške U slučaju da ste prilikom pisanja programa napravili grešku MicroPython će vas na nekoliko načina upozoriti, Slika 32.9.

Slika 32.9. U ovome kodu postoji greška, naime u jednom argumentu nedostaju navodnici

Na slici je vidljivo da se pojavio crveni krug kod linije 9. Osim toga, ime Marino je podcrtano crvenom valovitom crtom. Ako vam to promakne pa program otpremite, na LED-displeju BBC micro:bita pojavit će se natpis “Line 9 NameError…”. Kad dodate navodnike sve će biti kako treba. Napomena! Umjesto jednostrukih, navodnici mogu biti i dvostruki („Marino“).

Spremanje programa Program pospremate klikom na programsku tipku Save. Program će se pospremiti u mapi preuzimanja (Downloads). Iz te mape, metodom zakači i potegni možete ga otpremiti do neke druge pločice BBC micro:bita (isto kao što ste otpremali programe stvorene u MC Editoru). Radi dorade, pospremljeni program možete ponovno otvoriti u MP Editoru jednostavnim klikom na programsku tipku Open…

Poigrajte se s LED-displejom U postojećem programu obrišite sve do linije 5. Nakon toga napišite disp, Slika 32.10. Prema Slici 32.11. nastavite s pisanjem, do točke iza Image. Iz padajućeg izbornika klikom miša izaberite sličicu po vlastitoj želji. Program otpremite i uživajte. Ako imate volje i vremena, isprobajte sve sličice koje se nude. Sličice možete i sami kreirati. U MP Editoru prepišite i otpremite program

from microbit import * # Iskazivanje promjenljive sjaj = Image(„11111:33333:55555:7777 7:99999“) display.show(sjaj)

Slika 32.10. Čim upišete prvo slovo objekta otvara se padajući izbornik sa svim kodovima koji počinju tim slovom. Kad upišete dodatna slova, popis unutar izbornika se skraćuje. Kad na popisu ostane samo ono što vam stvarno treba MP Editor nudi objašnjenje (crvena strelica) Slika 32.11. Kad upišete točku pojavljuje se padajući izbornik s imenima svih gotovih sličica i još pokoji argument. Imena sličica upisana su velikim slovima. Koristite klizač kako biste sve istražili

Najprije iskažite promjenljivu, na primjer “sjaj”. Zatim joj odredite sadržaj i parametre tako da najprije upišete Image (jer stvarate sličicu), a potom unutar zagrada i navodnika za svaku LED-icu posebno upisujte broj od 0 do 9 (svaki upisani broj djeluje na jednu LED-icu LED-displeja BBC micro:bita, redom od gornje lijeve do donje desne LED-ice). Brojevi idu od 0 do 9, gdje je nula ugašeno, a 9 maksimalan sjaj. Redove LED-displeja odvajajte dvotočkom. Možete i drugačije. U MP Editoru prepišite i otpremite program

from microbit import * kvadrati = Image(„88888:“ „85558:“ „85258:“ „85558:“ „88888“) display.show(kvadrati)

Ako vam određena sličica treba samo jednom, ne morate ju “crtati” u promjenljivoj, već ju “nacrtate” u parametrima argumenta, unutar novih zagrada i pod navodnicima. U MP Editoru prepišite i otpremite program

from microbit import * display.show(Ima ge(„12345:12345:12345:12345:12345“))

Ako ste uspješno isprobali ponuđene programe, radi vježbe samostalno pokušajte “nacrtati” neku svoju sličicu.

Animacija MicroPython može na LED-displeju BBC micro:bita velikom brzinom izmjenjivati više različitih sličica tako da se dobije iluzija kretnje (animacije). Najjednostavniji način da to izvedete jest da sličice najprije definirate (“nacrtate”), a zatim ih redom prozivate. U MP Editoru prepišite i otpremite program

from microbit import * # Iskazivanje promjenljivih velika_kružnica = Image(„09990:“

„90009:“ „90009:“ „90009:“ „09990“) srednja_kružnica = Image(„00000:“ „09990:“ „09090:“ „09990:“ „00000“) mala_kružnica = Image(„00000:“ „00000:“ „00900:“ „00000:“ „00000“) lista_svih_kružnica = [velika_kružnica, srednja_kružnica, mala_kružnica] # Animacija display.show(lista_svih_kružnica, loop=True, delay=100)

U programu su najprije “nacrtane” sličice kružnica različitih veličina, a zatim je stvoren popis “lista_svih_kružnica” koji sadrži tri stavke koje će se izvoditi redom kako su upisane. MicroPython zna da je to popis jer se nalazi unutar uglatih zagrada. Slijedi animacija sličica metodom “show” gdje se u argumentu proziva promjenljiva s određenim parametrima. Traži se da se velikom brzinom (delay=100) neprekidno (loop=True) ponavljaju sličice iz popisa. Podsjetnik: parametar delay je pauza u milisekundama koja određuje brzinu izvođenja; parametar loop je petlja (neprekidno ponavljanje); True (istina) je potvrda ponavljanja. Kad ste maloprije pretraživali po gotovim sličicama, mogli ste ustanoviti da ima i pokoja gotova animacija, na primjer ALL_ARROWS. Želite li da se ta animacija odvija neprekidno morate u argumentu dodati parametre koji to omogućavaju. U MP Editoru prepišite i otpremite program

Slika 32.12. Koordinate piksela LED-displeja BBC micro:bita

from microbit import * display.show(Image.ALL_ARROWS, loop=True, delay=300)

Upravljanje pikselima (pixels) Piksel je jedna točkica cijelog displeja. U slučaju LED-displeja BBC micro:bita to je jedna LED-ica displeja. Kako biste lakše pratili opis koji slijedi, na Slici 32.12. prikazano je imenovanje svakog pojedinog piksela (svake LED-ice) LED-displeja BBC micro:bita. Svaka LED-ica ima koordinate x i y, počevši od gornjeg lijevog ugla (0,0). Sjaj svake pojedine LED-ice moguće je ugoditi metodom set_pixel(x,y,sjaj), gdje valja ugoditi parametar sjaj. U MP Editoru prepišite i otpremite program

from microbit import * display.set_pixel(2,3,6)

Program otpremite. Ako je sve kako valja, s nešto slabijim sjajem (sjaj = 6) pali se LED-ica trećeg stupca (x = 2), četvrtog retka (y = 3). Na prethodnoj slici je ta LED-ica zaokružena žutom bojom. Radi vježbe prepravite program tako da maksimalnim sjajem zasvijetli LED-ica petog stupca u drugom retku. Mala pomoć, ugodite parametre kako slijedi, set_pixel(4,1,9). Za paljenje cijelog LED-displeja koristite for petlje, kao na Slici 32.13. U ovom programu valja primijetiti nekoliko stvari. Prvo, u petlji for dodan je argument in range (u dometu, u rasponu). To znači da će kôd krenuti brojati od 0, nešto će obaviti, pa će uzeti sljedeći broj 1, ponovno će nešto obaviti i tako do broja 5 kad će petlja for završiti. Što on to obavlja? Pokreće novu for petlju koja također nešto obavlja, odnosno pali piksele. Drugo, primijetite vama novu metodu clear (poništiti, očistiti), koja je bez argumenta. To će ugasiti sve LED-ice LED-displeja BBC micro:bita. Treće, primijetite plave pozadine unutar for petlji. Svjetlija plava pozadina povezuje upisani kôd s prvom for petljom, a tamnija plava pozadina povezuje upisani kôd s drugom for petljom. Što to znači? To programeru (i programu) ukazuje koja se naredba odnosi na koji dio. Primjer, sleep(100) odnosi se na drugu petlju for i ne usporava izvođenje cijelog programa, već samo tu for petlju. Ako ne vjerujete, izbrišite uvlake kod naredbe sleep(100) tako da naredba ne