MicroPython — petlje i rad sa vremenom
U skoro svakom micro:bit programu koristi se ponavljanje i pauza. Bez petlji i kontrole vremena ne možemo napraviti animacije, igre, brojače ili projekte sa senzorima.
U ovoj lekciji naučićeš kako da:
- koristiš
while True(beskonačnu petlju) - praviš pauze pomoću
sleep() - razumeš razliku između brzog i kontrolisanog izvršavanja
- kombinuješ petlje, vreme i dugmad
Beskonačna petlja — while True
Micro:bit programi najčešće rade stalno dok je uređaj uključen. Zato koristimo beskonačnu petlju.
from microbit import *
while True:
display.show(Image.HEART)
Program stalno izvršava kod unutar petlje.
Ako nema sleep(), micro:bit će stalno ponavljati istu naredbu veoma brzo.
Šta se dešava bez pauze?
Ako u petlji proveravamo dugme bez pauze, program može postati „prebrz“.
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
Ovaj kod radi, ali procesor stalno proverava stanje dugmeta. Bolje je dodati kratku pauzu:
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
sleep(50) # kratka pauza 50 ms
Ovo je efikasnije i stabilnije.
Pauza — sleep(ms)
Funkcija sleep() zaustavlja program na određeno vreme.
Vreme se meri u milisekundama.
- 1000 ms = 1 sekunda
- 500 ms = pola sekunde
- 100 ms = vrlo kratka pauza
from microbit import *
display.show(Image.HAPPY)
sleep(1000) # čekamo 1 sekundu
display.show(Image.SAD)
Animacija pomoću petlje
Kombinovanjem while True i sleep()
možemo praviti animacije.
from microbit import *
while True:
display.show(Image.HAPPY)
sleep(500)
display.show(Image.SAD)
sleep(500)
Slike se smenjuju svakih 0.5 sekundi.
Primer: Brojač vremena
Možemo koristiti petlju da pravimo jednostavan brojač.
from microbit import *
broj = 0
while True:
display.show(str(broj))
sleep(1000) # čekamo 1 sekundu
broj = broj + 1
Ovaj program prikazuje brojeve 0, 1, 2, 3... svake sekunde.
Primer: Treptanje LED matrice
Možemo uključivati i isključivati ekran.
from microbit import *
while True:
display.show(Image.SQUARE)
sleep(300)
display.clear() # gasi LED matricu
sleep(300)
Ovo pravi efekat treptanja.
Rad sa funkcijom running_time()
MicroPython ima funkciju running_time()
koja vraća vreme od pokretanja programa (u ms).
from microbit import *
while True:
vreme = running_time()
display.scroll(str(vreme))
sleep(2000)
Ovo je korisno za merenje vremena reakcije ili trajanja događaja.
Poređenje sa MakeCode-om
U MakeCode-u koristiš blokove:
- forever
- pause (ms)
U MicroPython-u ih zamenjuju:
while Truesleep(ms)
MakeCode verziju možeš pogledati ovde:
Tipične greške početnika
- zaboravljena
sleep()→ program reaguje prebrzo - preduga pauza → izgleda kao da program ne radi
- zaboravljena
while True→ kod se izvrši samo jednom - zaboravljeno uvlacenje (indentacija) u petlji
Mini zadaci
Zadatak 1 (lakši)
Napravi program koji prikazuje srce 1 sekundu, zatim prazan ekran 1 sekundu — i tako stalno.
Zadatak 2 (srednji)
Napraviti brojač koji broji od 0 do 9, zatim se vraća na 0 i nastavlja.
Zadatak 3 (izazov)
Kada pritisneš dugme A, pokreni animaciju 3 sekunde, zatim se vrati na početni ekran.
U kom okruženju možeš probati ove primere?
- Thonny — koristi
from microbit import * - Online MicroPython editor (python.microbit.org)
- MakeCode Python — ali prilagodi sintaksu (
basic.pause(),basic.show_icon())
Šta si naučio?
- kako funkcioniše beskonačna petlja
- kako kontrolišemo brzinu programa
- kako se pravi animacija
- kako napraviti brojač
- kako meriti vreme izvršavanja
Skriveni mini kviz — Petlje i rad sa vremenom
Klikni na kviz i proveri da li razumeš osnovne koncepte while petlje i sleep() funkcije.
Otvori kviz
Mini kviz: Petlje i vreme
1. Šta radi while True: u MicroPython-u?
2. Koliko traje sleep(1000)?
3. Šta se dešava ako zaboravimo sleep() u petlji koja proverava dugme?
4. Koja funkcija vraća vreme od pokretanja programa u milisekundama?
5. Šta će se prikazivati u ovom programu?
from microbit import *
broj = 0
while True:
display.show(str(broj))
sleep(500)
broj = broj + 1
Mini zadaci (detaljno objašnjeni)
Zadatak 1
Prikaži brojeve od 0 do 4 na LED matrici, sa pauzom od 500ms između brojeva.
from microbit import *
for i in range(5):
display.show(str(i)) # Prikazuje trenutni broj
sleep(500) # Pauza od pola sekunde
Korak-po-korak:
- Kreiramo listu brojeva pomoću
range(5) - Prikazujemo svaki broj koristeći
display.show() - Dodajemo pauzu sa
sleep()kako bi brojevi bili vidljivi
Zadatak 2
Prikaži naizmenično slike srećnog i tužnog lica 3 puta.
from microbit import *
frames = [Image.HAPPY, Image.SAD]
for n in range(3):
for f in frames:
display.show(f)
sleep(500) # Pola sekunde između slika
Napomena:
- Korišćenje
forpetlje u petlji omogućava višestruko ponavljanje animacije - Možeš menjati trajanje pauze za bržu ili sporiju animaciju
Zadatak 3
Prikazuj brojač koji ide od 0 do 9, i kada dođe do 9, vraća se na 0 i nastavlja beskonačno.
from microbit import *
broj = 0
while True:
display.show(str(broj))
sleep(300)
broj += 1
if broj > 9:
broj = 0 # Resetovanje brojača
Objašnjenje:
- Beskonačna petlja
while Truestalno izvršava kod - Pauza
sleep(300)usporava prikaz brojeva - Resetujemo broj kada pređe 9
Zadatak 4
Pritisni dugme A da se prikaže srce ❤️, dugme B da se prikaže tužno lice □.
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HEART)
elif button_b.is_pressed():
display.show(Image.SAD)
else:
display.clear() # Ekran prazan ako nije pritisnuto
Uputstvo:
- Proveravamo stanje dugmadi sa
is_pressed() - Kombinujemo
if/elif/elseza različite reakcije
Zadatak 5
Kreiraj animaciju koja prikazuje srca različite veličine, ali pauziraj 200ms između promena, i ponavljaj beskonačno.
from microbit import *
frames = [Image.HEART_SMALL, Image.HEART, Image.HEART_SMALL]
while True:
for f in frames:
display.show(f)
sleep(200)
Napomena:
- Prvi korak: napravi listu slika
- Drugi korak: petlja koja prolazi kroz listu
- Treći korak: pauza između svake slike
Mini zadaci za samostalno rešavanje
Zadatak 6
Prikazuj tekst „HI“ na LED matrici svakih 2 sekunde, beskonačno.
Zadatak 7
Pravi brojač koji ide od 0 do 5 i zatim se vraća unazad do 0, ponavljaj beskonačno. Koristi while True i sleep().
Zadatak 8
Napravite animaciju 4 različita simbola (srca, smile, tužno lice, kvadrat), koja se menja svake 0.5 sekundi.
Zadatak 9
Kada se pritisne dugme A — prikazuje se „A“, kada dugme B — prikazuje se „B“, kada se pritisnu oba dugmeta — prikaži srce. Program stalno proverava dugmad.
Zadatak 10
Kreiraj „digitalni sat“ koji prikazuje sekunde od 0 do 9 na LED matrici i resetuje se kada dođe do 9. Dodaj pauzu 1 sekundu između prikaza.
Napomena o okruženjima
✔ U Thonny moraš pisati: from microbit import *
✔ U MakeCode Python koristi se drugačija sintaksa za tekst i slike, npr. basic.show_string("HI") ili basic.show_icon(IconNames.HEART)
Povezivanje sa drugim lekcijama: Kontrolne naredbe i petlje u MakeCode‑u
Da bi bolje razumeo/la kako se **grananje i petlje** koriste u programima, pogledaj MakeCode verziju primeraka:
- ➤ Kontrolne naredbe u programima micro:bit‑a — objašnjava kako se koristi if/else za donošenje odluka u kodu. :contentReference[oaicite:1]{index=1}
- ➤ Petlje i microbit — uvod u petlje kao kontrolne strukture koje pokreću ponavljanje. :contentReference[oaicite:2]{index=2}
U MicroPython‑u iste koncepte primenjujemo koristeći:
if / elif / else— grananje i kontrola tokawhileifor— petljesleep(ms)— kontrola vremena izvršavanja
U nastavku su primeri koji povezuju ove ideje.
3 zadatka sa instrukcijama i rešenjima (MicroPython)
Zadatak 1: Broj parne vrednosti
Napiši program koji pri trešenju uređaja (`shake`) prikazuje prvo parne brojeve od 0 do 10.
Objašnjenje i rešenje:
from microbit import *
while True:
if accelerometer.was_gesture("shake"):
for i in range(0, 11): # prolazimo od 0 do 10
if i % 2 == 0: # proveravamo da li je broj paran
display.show(i)
sleep(300)
display.clear()
✔ Ovaj zadatak kombinuje petlju for i grananje if
✔ Kod se izvršava samo kada se uređaj protrese — ideja iz MakeCode “on shake” koncepta. :contentReference[oaicite:3]{index=3}
Zadatak 2: Brojanje do uslova
Napiši program koji broji od 0 nagore dok ne stigne do vrednosti 7, a zatim prikazuje “OK”.
Objašnjenje i rešenje:
from microbit import *
broj = 0
while broj <= 7: # petlja se ponavlja dok broj ≤ 7
display.show(str(broj))
sleep(400)
broj += 1 # povećavamo broj
display.scroll("OK")
✔ Ovde koristimo while petlju sa uslovom, umesto beskonačne
✔ Nakon završetka petlje prikazujemo poruku — koncept grananja i kontrole toka. :contentReference[oaicite:4]{index=4}
Zadatak 3: Temperaturna kontrola
Napiši program koji neprekidno meri temperaturu i:
- ako je temperatura ≥ 25°C — prikaži strelicu nagore ↗
- inače — prikaži strelicu naniže ↘
Objašnjenje i rešenje:
from microbit import *
while True:
t = temperature() # očitavamo temperaturu
if t >= 25:
display.show(Image.ARROW_N) # strelica nagore
else:
display.show(Image.ARROW_S) # strelica naniže
sleep(500)
✔ Ovaj primer kombinuje petlju i grananje ✔ Analogno primerima s MakeCode‑a za grananje na osnovu temperature. :contentReference[oaicite:5]{index=5}
Ovi primeri ti pokazuju kako da iste ideje iz MakeCode tutorijala konvertuješ u pravi MicroPython kod,
koristeći while, for, if / else i sleep().
Skriveni mini kviz — Petlje i grananje
Klikni na kviz i proveri svoje razumevanje:
- kako koristiti
whileiforpetlje - kako koristiti
if / elseza odluke - kako kombinovati grananje i vreme (
sleep())
Otvori kviz
1. Šta će se desiti kada pokreneš sledeći kod?
from microbit import *
while True:
display.show("5")
2. Kako da prikažeš brojeve 0 do 5 jedan po jedan sa pauzom 500 ms?
from microbit import *
# tvoj kod ovde
3. Koja linija koda proverava da li je temperatura ≥ 25°C?
t = temperature()
# ?
4. Šta radi sleep(1000) u MicroPython kodu?
5. Šta se desi sa sledećim kodom?
from microbit import *
while True:
if button_a.is_pressed():
display.show("A")
else:
display.clear()