MicroPython — dugmad A i B na micro:bit-u
Micro:bit ima dva fizička dugmeta — A i B. Pomoću njih možemo napraviti interakciju sa korisnikom. U ovoj lekciji naučićeš kako da:
- proveriš da li je dugme trenutno pritisnuto
- reaguješ na klik (jedan pritisak)
- kombinuješ dugmad A i B
- napraviš mini projekat koristeći dugmad
Primere možeš isprobati u: ✔ Thonny (Run → Select interpreter → MicroPython BBC micro:bit) ✔ https://python.microbit.org/ (online editor)
1️⃣ Provera da li je dugme pritisnuto (is_pressed)
Metoda is_pressed() proverava da li je dugme trenutno pritisnuto.
Vraća vrednost True ili False.
from microbit import *
while True:
# Proveravamo stanje dugmeta A
if button_a.is_pressed():
display.show("A") # Prikazujemo slovo A
else:
display.clear() # Ako nije pritisnuto – brišemo ekran
□ Važno: Ovaj kod reaguje dok DRŽIŠ dugme.
2️⃣ Reakcija na jedan klik (was_pressed)
Ako želimo da reagujemo samo jednom po kliku,
koristimo metodu was_pressed().
from microbit import *
while True:
# Ako je dugme A kliknuto
if button_a.was_pressed():
display.show(Image.HAPPY)
sleep(500)
display.clear()
□ Razlika:
is_pressed()– reaguje dok držiš dugmewas_pressed()– reaguje samo jednom po kliku
3️⃣ Dugme B
Na isti način koristiš dugme B:
from microbit import *
while True:
if button_b.was_pressed():
display.show("B")
sleep(500)
display.clear()
4️⃣ Različite reakcije za A i B
Možemo napraviti da svako dugme ima drugačiju funkciju.
from microbit import *
while True:
# Ako je kliknuto A – prikazujemo srce
if button_a.was_pressed():
display.show(Image.HEART)
sleep(500)
# Ako je kliknuto B – prikazujemo osmeh
if button_b.was_pressed():
display.show(Image.SMILE)
sleep(500)
display.clear()
□ Ovde koristimo dva odvojena if uslova.
To znači da oba mogu biti izvršena.
5️⃣ Istovremeno dugme A i B
Možemo proveriti da li su oba dugmeta pritisnuta u istom trenutku.
from microbit import *
while True:
if button_a.is_pressed() and button_b.is_pressed():
display.show(Image.HEART)
else:
display.clear()
Operator and znači: oba uslova moraju biti tačna.
6️⃣ Primer — Brojač pomoću dugmeta A
Sada pravimo mali projekat. Svaki klik na dugme A povećava broj za 1.
from microbit import *
broj = 0 # početna vrednost
while True:
if button_a.was_pressed():
broj = broj + 1 # uvećavamo promenljivu
display.show(broj)
sleep(500)
Ovo je pravi mini projekat — koristimo:
- promenljivu
- dugme
- LED ekran
7️⃣ Primer — Dugme A povećava, B smanjuje
from microbit import *
broj = 0
while True:
if button_a.was_pressed():
broj += 1 # skraćeni zapis za broj = broj + 1
if button_b.was_pressed():
broj -= 1 # smanjujemo vrednost
display.show(broj)
sleep(200)
□ Sada imamo potpunu kontrolu nad promenljivom pomoću dugmadi.
8️⃣ Mini projekat — Jednostavan meni
Napravimo mali meni:
- Dugme A → prikazuje temperaturu
- Dugme B → prikazuje svetlost
- A + B → prikazuje srce
from microbit import *
while True:
if button_a.is_pressed() and button_b.is_pressed():
display.show(Image.HEART)
elif button_a.was_pressed():
t = temperature()
display.scroll("T:" + str(t))
elif button_b.was_pressed():
l = display.read_light_level()
display.scroll("L:" + str(l))
Ovo je već ozbiljniji projekat jer kombinuje:
- dugmad
- promenljive
- senzore
- tekstualni prikaz
Najčešće greške
- Zaboravljen
while True— program se izvrši samo jednom. - Zaboravljen
sleep()— broj se menja prebrzo. - Mešanje
is_pressed()iwas_pressed().
Mini zadaci za vežbu
Zadatak 1 (lak)
Kada pritisneš A — prikaži slovo A. Kada pritisneš B — prikaži slovo B.
Zadatak 2
Napraviti brojač koji počinje od 10 i smanjuje se pritiskom na dugme A.
Zadatak 3
Napraviti program gde:
- A → prikazuje osmeh
- B → prikazuje tužno lice
- A + B → prikazuje srce
Zadatak 4 (srednje težak)
Napraviti brojač koji:
- A povećava broj
- B resetuje broj na 0
Zadatak 5 (izazov)
Napraviti jednostavnu igru:
- A dodaje 1 poen
- B dodaje 2 poena
- A + B prikazuje trenutni rezultat
Šta si naučio?
- kako da koristiš dugmad A i B
- razliku između is_pressed i was_pressed
- kako da kombinuješ uslove
- kako da praviš interaktivne projekte
Povezivanje sa stranicom “Naredbe u MakeCode-u”
Na stranici Naredbe u MakeCode-u možeš da vidiš pregled različitih blokova i *komandi* koje se najčešće koriste u programiranju micro:bit uređaja, kao što su komande iz:
- Basic — za tekst, brojeve i osnovne akcije
- Input — dugmad, pokreti, senzori
- Music — tonovi i melodije
- Logic — uslovne odluke
- Variables — promenljive
U nastavku su tri primera koji su analogni MakeCode naredbama, ali rešeni u MicroPython-u.
Primer 1 — “Prikazi ime na startu”
U MakeCode-u koristiš blok Basic → show string da odmah prikažeš poruku kada program počne. U MicroPython-u ovo radimo ovako:
from microbit import *
# Prikazuje ime jednom na početku
display.scroll("Marko")
✔ Ovaj kod se izvršava odmah po pokretanju programa — kao MakeCode blok on start → show string.
Primer 2 — “Prikaz srca kada se protrese”
U MakeCode-u postoji Input → on shake gest koji reaguje na tresenje. U MicroPython-u možemo proveriti gest u petlji:
from microbit import *
while True:
if accelerometer.was_gesture("shake"):
display.show(Image.HEART)
sleep(600)
display.clear()
□ Ovaj kod detektuje tresenje (shake) i onda prikazuje srče — slično MakeCode-ovom bloku za gest.
Primer 3 — “Prikaži nasumičan broj kad se protrese”
U MakeCode-u koristimo blok Math → pick random u okviru Input → on shake.
U MicroPython-u radimo isto uz random modul:
from microbit import *
import random
while True:
if accelerometer.was_gesture("shake"):
broj = random.randint(1, 6) # nasumicni broj 1–6
display.show(broj)
sleep(800)
display.clear()
□ Ovaj primer pravi digitalnu “kockicu” — svaki tresak daje novi broj od 1 do 6. □ U MakeCode-u bi to bio blok “on shake → show number(randint(1, 6))”. :contentReference[oaicite:3]{index=3}
Ove MicroPython verzije ti pokazuju kako koncepti iz MakeCode-a i blokova mogu da se prevede u pravi Python kod — i da rade isto na tvom micro:bit-u.
Skriveni mini kviz — MakeCode i MicroPython
Proveri da li možeš da prepoznaš koji MakeCode blok odgovara datom MicroPython kodu. Otvori kviz i testiraj svoje znanje.
Otvori kviz
Mini kviz: Prevedi Python u MakeCode blok
1. Koji MakeCode blok odgovara ovom MicroPython kodu?
display.scroll("Zdravo")
2. Koji blok je ekvivalent sledećem kodu?
if button_a.is_pressed():
display.show(Image.HEART)
3. Koji MakeCode blok odgovara sledećem kodu?
import random
broj = random.randint(1, 6)
display.show(broj)
4. Šta radi ovaj kod?
if accelerometer.was_gesture("shake"):
display.show(Image.SMILE)
Mini projekti — Integracija znanja (LED + dugmad + logika)
Ovi zadaci kombinuju sve što si do sada naučio:
- LED matricu (tekst, slike, animacije)
- dugmad A i B
- promenljive
- petlje i uslove
Zadaci su izazovni i namenjeni su za samostalan rad.
Mini projekat 1 — Brojač sa kontrolom
Cilj: Napravi interaktivni brojač.
Zahtevi:
- Dugme A povećava broj za 1
- Dugme B smanjuje broj za 1
- Kada su oba dugmeta pritisnuta — broj se resetuje na 0
- Trenutna vrednost se prikazuje na LED matrici
Uputstvo za rešavanje:
- Napraviti promenljivu
broj = 0 - Koristiti
while Truepetlju - U petlji proveravati stanja dugmadi
- Nakon svake promene prikazati novu vrednost
- Dodati malu pauzu (
sleep(200)) da se izbegne višestruko brojanje
Razmisli: kako sprečiti da jedno držanje dugmeta poveća broj više puta?
Mini projekat 2 — Mini meni (interaktivni izbor)
Cilj: Napravi jednostavan meni sa tri opcije.
Scenario:
- Dugme A menja opciju (1 → 2 → 3 → 1)
- Dugme B potvrđuje izbor
Opcije mogu biti:
- 1 → Prikaži srce
- 2 → Prikaži tekst „Hello“
- 3 → Pokreni kratku animaciju
Uputstvo:
- Kreiraj promenljivu
opcija = 1 - Na dugme A povećavaj vrednost opcije
- Ako opcija pređe 3 — vrati je na 1
- Na dugme B izvrši akciju u zavisnosti od opcije
- Koristi
if / elif / else
Ovaj zadatak uvodi osnovu za pravljenje pravih interaktivnih sistema.
Mini projekat 3 — Mini igra: Pogodi broj
Cilj: Napravi jednostavnu igru pogađanja broja.
Pravila:
- Micro:bit generiše nasumičan broj od 1 do 5
- Dugme A povećava tvoju pretpostavku
- Dugme B potvrđuje izbor
- Ako pogodiš — prikaži srce ❤️
- Ako pogrešiš — prikaži tužno lice i generiši novi broj
Smernice:
- Koristi
import random - Kreiraj promenljivu za tajni broj
- Kreiraj promenljivu za igračev izbor
- Ograniči izbor od 1 do 5 (vrati na 1 ako pređe 5)
- Nakon svake runde resetuj igru
Ovo je kombinacija:
- promenljivih
- uslova
- dugmadi
- LED prikaza
- logike igre
□ Izazov za napredne: Dodaj brojač pokušaja i prikaži koliko je puta igrač pokušao da pogodi broj.
Rešenja mini projekata (za nastavnike)
Ovaj deo je namenjen nastavnicima radi provere i demonstracije mogućih rešenja. Preporuka je da učenici prvo pokušaju samostalno.
Prikaži rešenja
Mini projekat 1 — Interaktivni brojač
from microbit import *
brojac = 0 # početna vrednost
while True:
# Ako je pritisnuto dugme A, povećaj brojač
if button_a.was_pressed():
brojac = brojac + 1
display.show(str(brojac)) # pretvaramo broj u tekst
# Ako je pritisnuto dugme B, smanji brojač
if button_b.was_pressed():
brojac = brojac - 1
display.show(str(brojac))
# Ako su oba dugmeta pritisnuta istovremeno, resetuj brojač
if button_a.is_pressed() and button_b.is_pressed():
brojac = 0
display.show("0")
sleep(100)
Metodička napomena:
Obratiti pažnju na razliku između was_pressed() i is_pressed().
was_pressed() reaguje samo jednom po pritisku — idealno za brojače.
Mini projekat 2 — Mini meni sa ikonama
from microbit import *
# Lista ikona (meni)
ikone = [Image.HEART, Image.HAPPY, Image.SAD]
pozicija = 0
display.show(ikone[pozicija])
while True:
# Dugme A -- sledeća ikona
if button_a.was_pressed():
pozicija = pozicija + 1
if pozicija >= len(ikone):
pozicija = 0 # vraćamo na početak
display.show(ikone[pozicija])
# Dugme B — prethodna ikona
if button_b.was_pressed():
pozicija = pozicija - 1
if pozicija < 0:
pozicija = len(ikone) - 1
display.show(ikone[pozicija])
sleep(100)
Metodička napomena:
Ovaj zadatak uvodi rad sa listama i indeksima.
Učenici uče kako funkcioniše len() i ciklično kretanje kroz listu.
Mini projekat 3 — Reakcioni test
from microbit import *
import random
while True:
# Nasumično čekanje između 2 i 5 sekundi
cekanje = random.randint(2000, 5000)
sleep(cekanje)
display.show("!")
start = running_time() # beležimo početno vreme
# Čekamo da korisnik pritisne dugme A
while not button_a.is_pressed():
pass
reakcija = running_time() - start # računamo razliku vremena
display.scroll(str(reakcija) + "ms")
sleep(2000)
Metodička napomena:
Ovaj projekat kombinuje:
- rad sa promenljivama
- rad sa vremenom (
running_time()) - petlje
- nasumične brojeve