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 True
  • sleep(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 for petlje 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 True stalno 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/else za 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:

U MicroPython‑u iste koncepte primenjujemo koristeći:

  • if / elif / else — grananje i kontrola toka
  • while i for — petlje
  • sleep(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 while i for petlje
  • kako koristiti if / else za 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()