8 minute read

BBC micro:bit [37]

Poštovani čitatelji, u prošlom ste nastavku serije izradili ispitivač vlažnosti tla s osjetilom tvrtke DFROBOT. U uputama je napomenuto da to osjetilo ima jednu veliku manu, naime zbog elektrolitskog efekta na pozitivnom se ticalu vrlo brzo natalože kemijski spojevi koji su prisutni u zemlji kojoj mjerite vlažnost. Kako biste to vijih individua unutar promatrane skupine, sasvim će sigurno utjecati i na širenje nečega što rado nazivam “emocionalnim valom” i na ostale članove skupine. Međutim, neovisno o načinu na koji životinje mogu detektirati nijanse određenih prirodnih faktora, u pozadini toga svega ipak je još i nešto drugo; nešto daleko suptilnije od anatomskih ili fizioloških postavki određene vrste – životinje, naime, nisu izgubile nešto što mi odavno jesmo. Vezu s prirodom. Načini njihove međusobne komunikacije još uvijek uključuju i određene razine telepatije, a želimo li proniknuti u njihove tajne, prije svega, trebali bismo možda na tren učiteljsku i sveznadarsku palicu predati njima, i jednostavno – zašutjeti. Zašutjeti i početi slušati. Možda bismo tada čuli i nešto više – glas same Zemlje, prigušen slojevima asfalta...

Advertisement

Ivana Janković, Croatian Wildlife Research and Conservation Society taloženje drastično ograničili predloženo je da samostalno prepravite program i način spajanja osjetila vlažnosti tla tako da osjetilo dobiva napon kratkotrajno, samo dok se pritišće tipka A (ili B) na pločici BBC micro:bita. Osim toga, predloženo je da ispitivač vlažnosti tla bude autonoman, odnosno da ga napajate iz baterija, a rezultat mjerenja da se prikazuje na displeju.

Prvo što trebate učiniti je promijeniti dosad korištene izvode BBC micro:bita. Korišteni izvod P3 je u sprezi s displejom koji ste u prethodnom programu morali isključiti, ali displej trebate za prikaz pa zato koristite P1 za spajanje s izvodom osjetila vlažnosti tla OUT. Nadalje, kako biste osjetilo vlažnosti tla mogli paliti/gasiti pritiskom na tipku A (ili B) preselite crvenu premosnicu s 3V na neki digitalni izlaz BBC micro:bita, na primjer na P2, Slika 37.1.

Program iz prošlog broja prepravite kako je vidljivo na Slici 37.2.

Nakon otpremanja, ako sve radi kako valja, trebate osjetilo baždariti na način kako je opisano u prošlom broju ABC tehnike, jer argument 600 iz programa sa Slike 37.2. je broj koji je dobio autor ovih redaka, što kod vas ne mora biti tako.

U nastavku slijedi tema koju, ili volite, ili ne volite, ali složit ćete se da je vrlo važna. Radi se o primjeni matematike u MicroPythonu.

Matematika

Najbolje je odmah krenuti s primjerom. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.3.

U promjenljivoj ostatak ne izračunava se postotak, kako bi se dalo zaključiti iz korištenog znaka %, već je to dijeljenje kod kojega se iskazuje samo cjelobrojni ostatak (modulo). Drugim riječima, 16%3 znači 16/3. Rezultat je 5, a iskazuje se ostatak 1.

U promjenljivoj cijeli_broj nema “dvostrukog” dijeljenja, već je to dijeljenje gdje se iskazuje samo cijeli broj koji je zaokružen nadolje (floor division). Drugim riječima, 16//6 znači 16/6. Rezultat je 2,66666, a iskazuje se samo cijeli broj 2.

Redoslijed izvođenja matematičkih operacija

U MicroPythonu se matematičke operacije načelno izvode slijeva nadesno, no ne uvijek jer neke operacije imaju prednost. Redoslijed je sljedeći:

• najprije se računa ono unutar zagrada ()

• slijedi potenciranje **

• zatim množenje *, dijeljenje /, modulo % i floor division //

• te na kraju zbrajanje + i oduzimanje –.

U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.5.

Provjera rješenja:

7*2-11%3**(6/3).

Najprije valja riješiti ono što je u zagradama, (6/3)=2:

=7*2-11%3**2.

Slijedi potenciranje, 3**2=9:

=7*2-11%9.

Kako je iz programa vidljivo, znak zbrajanja je + (plus), znak oduzimanja je – (minus), znak množenja je * (zvjezdica), znak dijeljenja je / (kosa crta) i znak potenciranja jesu ** (dvije uzastopne zvjezdice).

Osim navedenih, moguće su i neke specijalne matematičke operacije. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.4.

Množenje i modulo su u istom rangu, no slijeva nam najprije dolazi množenje, 7*2=14: =14-11%9, a zatim modulo, 11%9=1 ostatak 2: =14-2.

Na kraju ostaje oduzimanje: =12

Zaokruživanje

U MicroPythonu je uključeno nekoliko načina zaokruživanja, integer, decimal places, floor i ceiling.

Kod zaokruživanja decimalnog u cijeli broj (integer) zaokružuje se nadolje. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.6. Slika 37.6. Na displeju se čita 3, zbog zaokruživanja nadolje

Kod zaokruživanja “decimal places” (round) valja nakon broja iza zareza dodati parametar koji ukazuje koliko decimalnih mjesta želite. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.7.

Slika 37.8. Funkcija floor ne nalazi se u biblioteci “microbit”, već u biblioteci “math” koju treba uvesti

Ponašanje funkcije ceiling (plafon) slično je prethodnoj funkciji jer zaokružuje na cijeli broj, ali nagore. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.9.

Slika 37.9. Na displeju se čita 7

U biblioteci “math” nalazi se još podosta toga, na primjer logičke funkcije, trigonometrijske funkcije, konstante, no o tome nekom drugom prigodom. Ako želite, možete ih samostalno istražiti tako da uvezete cijelu biblioteku, from math import *. Na primjer, isprobajte korjenovanje, Slika 37.10.

Slika 37.7. Na displeju se čita 3,14, zbog parametra 2 iza zareza

Ovdje valja napomenuti da će decimala biti zaokružena nadolje ako je sljedeća decimala manja od 4, a nagore ako je veća od 5. Na primjer, funkcija round(3.141592,3) će zbog parametra 3 dati rezultat 3,142. Osim toga, ako se ne upiše parametar za dužinu decimalnih mjesta, dobit će se samo cijeli broj s time da će biti zaokružen po istom načelu kao i decimale, odnosno ako je prva decimala manja od 4 dobiva se nepromijenjeni cijeli broj, a ako je prva decimala veća od 5, dobiva se cijeli broj zaokružen nagore. Na primjer, round(3.3) dat će rezultat 3, a round(3.8) dat će rezultat 4.

Kod zaokruživanja s funkcijom floor (pod) dobiva se cijeli broj koji je zaokružen nadolje (to je slično funkciji floor division). U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.8.

Slika 37.10. Za uključivanje operacije korjenovanja (square root – kvadratni korijen) trebate biblioteku math

Apsolutna vrijednost broja

Vrlo korisna funkcija kada trebate negativan broj pretvoriti u pozitivan. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.11.

Slika 37.11. Rješenje u zagradi je -8, no traži se apsolutna vrijednost pa je odgovor 8

Napomena, apsolutne vrijednosti pozitivnih brojeva ostaju pozitivne.

Slučajni brojevi

Ako vam zatrebaju slučajno generirani brojevi, najprije morate uvesti biblioteku (random).

Nakon upisivanja metode morate unutar zagrada upisati parametre raspona unutar kojih želite da se generira slučajan broj. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.12.

Na Slici 37.16. vidljiva je elektronička shema numeričke tipkovnice.

Slika 37.12. Ovaj program s metodom “randint” generira cijele slučajne brojeve u rasponu od -10 do 10

Osim navedenoga moguće je generirati i decimalni slučajan broj u rasponu od 0,0 do 1,0, i to s nekoliko decimala. U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.13.

Slika 37.13. Ovaj program s metodom “random” generira slučajne decimalne brojeve u rasponu od 0,0 do 1,0

Također, moguće je generirati i neki drugi decimalni broj koji može biti veći od 1,0 ili manji od 0,0 (negativan broj). U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.14.

Slika 37.16. Elektronička shema tipkovnice Velleman

Kako s BBC micro:bitom upravljati tipkovnicom koja ima 16 tipki, a samo 8 izvoda?

Odnosno, kako će BBC micro:bit znati koja je tipka pritisnuta?

Načelo rada matrične tipkovnice

Slika 37.14. Ovaj program s metodom “uniform” generira slučajne decimalne brojeve u rasponu od 0 do 100 gdje je uključeno nekoliko decimala

Kako biste stečeno znanje iskoristili u nečem konkretnom, najbolje je da napravite vježbu koja slijedi.

Minijaturni kalkulator

Za to će vam trebati neka numerička tipkovnica kao na primjer ova sa Slike 37.15.

Matricu možemo promatrati kroz stupce i redove. Proučite prethodnu sliku. Izvodi od “pin1” do “pin4” su stupci, a izvodi od “pin5” do “pin8” su redovi matrice. Zbog toga je tipka sw1 u spoju s prvim stupcem (pin1) i prvim redom (pin5), dok je tipka swD u spoju s četvrtim stupcem (pin4) i četvrtim redom (pin8) matrice. Sad zamislite da u određenom trenutku, drugi stupac (pin2) dobiva napon (na slici pratite crvenu crtu). Niti jedan drugi izvod nema napona sve dok se ne pritisne, na primjer tipka sw8 (kako je vidljivo na slici). Pritiskom tipke sw8 napon dobiva i treći red (pin7). Što to zapravo znači? Ako znamo koji stupac ima napajanje, a pritom gledamo i redove, onda znamo koja je tipka pritisnuta. Drugim riječima, ako drugi stupac dobiva napajanje s drugog izvoda (pin2) i pritom detektiramo napon u trećem redu (pin7) tada znamo da je tipka sw8 pritisnuta.

Dakle, kako bi BBC micro:bit znao koja je tipka pritisnuta treba izvode tipkovnice od “pin1” do “pin4” spojiti na digitalne izlaze BBC micro:bita i redom ih napajati, a izvode tipkovnice od “pin5” do “pin8” spojiti na digitalne ulaze BBC micro:bita (naravno preko otpornika pull-down) i redom ih provjeravati. U programu treba predvidjeti dovođenje napona tipkovnici od “pin1” do “pin4” naizmjence, odnosno izlazi BBC micro:bita moraju biti uključivani i isključivani jedan po jedan. Kod svakog pojedinog uključivanja napo- na program treba čitati digitalna stanja na ulazima BBC micro:bita koji su spojeni na tipkovnicu od “pin5” do “pin8”.

Dosta teorije, prijeđite na konkretnu stvar. Prvo, na tipkovnicu zalemite 8 elemenata STRIP-

Potom

Izvode tipkovnice od “pin1” do “pin4” spojite redom na izvode BBC micro:bita koji nisu u sprezi s displejom, a to su P0, P1, P2 i P8. Izvode tipkovnice od “pin5” do “pin8” spojite redom preko otpornika pull-down od 10 kΩ na izvode BBC micro:bita koji nisu u sprezi s displejom, a to su P12, P13, P14 i P16. GND spojite na drugi kraj svih otpornika pull-down.

Skeniranje tipkovnice

U MP Editoru prepišite te otpremite i isprobajte program, Slika 37.19.

Ako je sve kako valja, nakon ispisivanja riječi kalkulator možete provjeriti ispravnost tipkovnice. Kod pritiska tipke sw1 na displeju se ispiše 1, kod pritiska tipke sw2 ispiše se 2 i tako dalje za sve brojeve. Kod pritiska tipke swA ispiše se znak dijeljenja (/), tipkom swB dobiva se znak množenja (*), tipkom swC znak oduzimanja (-), tipkom swD znak zbrajanja (+), tipkom sw# dobiva se znak jednako (=), a tipkom sw* dobiva se CE (od engleskog clean – očistiti).

S obzirom na uvedene znakove matematičkih operacija, sigurno naslućujete da slijedi programski kôd za računanje s osnovnim matematičkim operacijama, plus, minus, puta i podijeljeno. Kako je tema široka, bit će objašnjena u sljedećem broju ABC tehnike, no to ne znači da ne možete sami pokušati riješiti unos podataka, izračunavanje i prikazivanje rezultata. Sretno!

Podsjetnik:

** > matematička operacija potenciranja

* > matematička operacija množenja

/ > matematička operacija dijeljenja

+ > matematička operacija zbrajanja

- > matematička operacija oduzimanja

% > modulo, matematička operacija dijeljenja kod koje se iskazuje ostatak

// > floor division, matematička operacija dijeljenja kod koje se iskazuje cijeli broj zaokružen nadolje int(3.6) > integer, zaokruživanje decimalnog u cijeli broj nadolje (3) round(3.1415926,2) > decimal places, zaokruživanje do zadanog broja decimala, na primjer parametar 2 daje dva decimalna mjesta (3,14)

Nastavak s 4. stranice

Računalne igre

nemaju sigurnu vodu i sanitarne uvjete). Iako je UN-ov cilj vrlo ambiciozan, svaka pozitivna akcija koja se poduzima može napraviti razliku. Čini li to velik dio populacije, uspjeh je zagarantiran. Brojne su mogućnosti, poručuje organizator manifestaicje Svjetskog dana voda, što napraviti: štedjeti vodu u kući prilikom tuširanja i pripreme hrane; osigurati ispravne vodoinstalacije kako voda ne bi curila ne bacati hranu, lijekove, ulje, abs(-20) > apsolutna vrijednost broja gdje je rezultat pozitivan broj (20) import math > biblioteka sadrži razne matematičke operacije kojih nema u biblioteci microbit floor(9.55) > (iz biblioteke math) zaokruživanje u cijeli broj nadolje (9) ceil(6.1) > (iz biblioteke math) zaokruživanje u cijeli broj nagore (7) sqrt(81) > (iz biblioteke math) square root –kvadratni korijen (9) import random > biblioteka s naredbama za generiranje slučajnih brojeva random.randint(-10,10) > generiranje slučajnih cijelih brojeva unutar raspona upisanih parametara random.random() > generiranje slučajnih decimalnih brojeva u rasponu od 0,0 do 1,0 random.uniform(0,100) > generiranje slučajnih decimalnih brojeva unutar raspona upisanih parametara.

Za ove ste vježbe trebali:

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

• rubni priključak

• eksperimentalnu pločicu na ubadanje

• USB-kabel

• tipkovnicu s matricom od 16 tipki tvrtke Velleman

• osam elemenata muškog STRIP-konektora

• četiri otpornika od 10 kΩ

• trinaest premosnica M – F. Marino Čikeš, prof.

TEHNIČKE POŠTANSKE MARKE kemikalije i sl. u kanalizaciju; kupovati lokalne i sezonske proizvode s manjom količinom vode korištenom u njihovoj proizvodnji; saditi drveće i praviti kišne vrtove; koristiti prirodna rješenja za smanjenje rizika od poplava; saznati odakle dolazi pitka voda i koja se sve postrojenja koriste za njeno pročišćavanje; kako se upravlja otpadnim vodama i dr.

Ivo Aščić

This article is from: