Kompas i temperatura na micro:bit-u
Pored LED matrice i dugmadi, micro:bit ima i ugrađene senzore koji mu omogućavaju da „oseti“ okruženje. U ovoj lekciji upoznaćemo dva važna senzora: kompas i senzor temperature.
Ovi senzori se često koriste u igrama, navigaciji i pametnim uređajima, a u MicroPython-u su vrlo jednostavni za korišćenje.
Senzor temperature
Micro:bit može da meri temperaturu okoline (u stepenima Celzijusa).
U MicroPython-u koristimo modul temperature.
from microbit import *
while True:
t = temperature()
display.scroll(str(t) + "C")
sleep(2000)
Ovaj program:
- očita trenutnu temperaturu
- pretvori broj u tekst
- prikaže je na LED matrici
- sačeka 2 sekunde i ponovi proces
□ Temperatura se menja ako dodirneš micro:bit prstima, jer se senzor zagreva.
Kompas (orijentacija prema severu)
Micro:bit ima ugrađen digitalni kompas koji može da odredi u kom pravcu je okrenut uređaj. Vrednost se meri u stepenima (0–360°).
Pre prve upotrebe kompas mora da se kalibriše. MicroPython to radi automatski kada pozoveš funkciju za kompas.
Kako radi kompas na micro:bit-u
Kompas koristi magnetometar koji detektuje Zemljino magnetno polje. Na osnovu toga micro:bit može da odredi pravac u stepenima od 0 do 360.
from microbit import *
compass.calibrate() #kalibracija kompasa
while True:
pravac = compass.heading()
display.scroll(str(pravac))
sleep(1000)
Vrednosti znače:
- 0° — sever
- 90° — istok
- 180° — jug
- 270° — zapad
Primer: Pronađi sever
U ovom primeru micro:bit prikazuje strelicu kada je okrenut ka severu.
from microbit import *
while True:
pravac = compass.heading()
if pravac < 10 or pravac > 350:
display.show(Image.ARROW_N)
else:
display.clear()
sleep(300)
Na ovaj način vidiš kako se senzori kombinuju sa:
- uslovima (
if) - petljama
- grafikom na LED matrici
Poređenje sa MakeCode-om
Ako si ranije radio u MakeCode-u, ovo je isto kao blokovi:
- temperature (°C)
- compass heading (°)
Razlika je što sada:
- jasno vidiš tok programa
- učiš pravu sintaksu Python-a
- lakše prelaziš na složenije projekte
□ Više o blokovima možeš videti na zvaničnoj MakeCode micro:bit stranici:
https://makecode.microbit.org
Napredniji rad sa temperaturom
Primer 1 — Digitalni termometar sa indikatorom
from microbit import *
while True:
t = temperature()
if t < 18:
display.show(Image.SAD)
elif 18 <= t <= 25:
display.show(Image.HAPPY)
else:
display.show(Image.ANGRY)
sleep(1000)
Micro:bit prikazuje različitu ikonicu u zavisnosti od temperature.
Primer 2 — Dugme B prikazuje temperaturu
from microbit import *
while True:
if button_b.was_pressed():
t = temperature()
display.scroll(str(t) + "C")
Temperatura se prikazuje samo kada pritisneš dugme.
Mini projekat — Pametni termometar
Napravimo uređaj koji:
- meri temperaturu
- pamti najvišu izmerenu vrednost
- dugme A prikazuje trenutnu temperaturu
- dugme B prikazuje maksimalnu temperaturu
from microbit import *
max_temp = temperature()
while True:
t = temperature()
if t > max_temp:
max_temp = t
if button_a.was_pressed():
display.scroll("T:" + str(t))
if button_b.was_pressed():
display.scroll("MAX:" + str(max_temp))
sleep(500)
Primer — Prikaz pravca strelicom
from microbit import *
while True:
pravac = compass.heading()
if pravac < 45 or pravac > 315:
display.show(Image.ARROW_N)
elif 45 <= pravac < 135:
display.show(Image.ARROW_E)
elif 135 <= pravac < 225:
display.show(Image.ARROW_S)
else:
display.show(Image.ARROW_W)
sleep(300)
Micro:bit sada pokazuje jedan od četiri glavna pravca.
Mini projekat — Pronađi sever
Zadatak: Okreni micro:bit ka severu. Ako je tačno usmeren, prikazuje se ✓.
from microbit import *
while True:
pravac = compass.heading()
if pravac < 10 or pravac > 350:
display.show(Image.YES)
else:
display.show(Image.NO)
sleep(200)
Kako kompas meri pravac?
0° (Sever)
↑
270° (Zapad) ← → 90° (Istok)
↓
180° (Jug)
Kompas daje broj između 0 i 360. Mi taj broj delimo na intervale.
Mini projekat — Ekspedicioni uređaj
Uređaj koji:
- Dugme A — pokazuje temperaturu
- Dugme B — pokazuje pravac
- Ako je temperatura preko 30°C → upozorenje
from microbit import *
while True:
if button_a.was_pressed():
t = temperature()
display.scroll(str(t) + "C")
if t > 30:
display.show(Image.SKULL)
sleep(1000)
if button_b.was_pressed():
pravac = compass.heading()
display.scroll(str(pravac))
sleep(200)
Mini projekat — Digitalni kompas
U ovom mini projektu napravićemo digitalni kompas koji prikazuje glavne strane sveta: N, E, S, W.
Micro:bit koristi magnetometar da detektuje pravac u stepenima od 0 do 360. Na osnovu te vrednosti možemo odrediti gde je sever, istok, jug i zapad.
Pre korišćenja kompasa, potrebno je izvršiti kalibraciju. Micro:bit će tražiti da ga pomeraš u obliku kruga.
from microbit import *
# kalibracija kompasa
compass.calibrate()
while True:
pravac = compass.heading()
if pravac < 45 or pravac > 315:
display.show("N")
elif pravac < 135:
display.show("E")
elif pravac < 225:
display.show("S")
else:
display.show("W")
sleep(500)
Kako radi program
compass.calibrate()kalibriše kompascompass.heading()vraća pravac od 0 do 360 stepeni- uslovi određuju stranu sveta
display.show()prikazuje slovo na LED matrici
Testiraj program
- Okreći micro:bit
- Posmatraj kako se menja slovo
- Uporedi sa pravim kompasom ili telefonom
Izazov (napredni zadatak)
Pokušaj da prikažeš i dijagonalne pravce:
- NE — severoistok
- NW — severozapad
- SE — jugoistok
- SW — jugozapad
Ovaj projekat je osnova za:
- navigacione uređaje
- igre sa orijentacijom
- robotske projekte
Zadaci za samostalan rad
Zadatak 1
Napravi program koji prikazuje:
- LED tačku koja se pali ako je temperatura ispod 15°C
Zadatak 2
Prikaži strelicu samo kada je uređaj okrenut ka istoku.
Zadatak 3
Napravi kombinovani uređaj:
- Ako je temperatura veća od 28°C i uređaj je okrenut ka jugu → prikaži "HOT"
Zadatak 4 (izazov)
Sačuvaj minimalnu i maksimalnu temperaturu tokom časa.
Mini projekat — Mala meteorološka stanica
Napravimo malu meteorološku stanicu koja:
- meri temperaturu
- pokazuje pravac (kompas)
- pamti minimalnu i maksimalnu temperaturu
- dugme A — trenutna temperatura
- dugme B — pravac kretanja
- dugme A+B — MIN i MAX temperatura
Program
from microbit import *
# Početne vrednosti
trenutna = temperature()
min_temp = trenutna
max_temp = trenutna
while True:
trenutna = temperature()
# Ažuriranje minimalne i maksimalne temperature
if trenutna < min_temp:
min_temp = trenutna
if trenutna > max_temp:
max_temp = trenutna
# Dugme A - trenutna temperatura
if button_a.was_pressed():
display.scroll("T:" + str(trenutna) + "C")
# Dugme B - pravac (kompas)
if button_b.was_pressed():
pravac = compass.heading()
display.scroll(str(pravac) + "deg")
# Dugme A+B - min i max
if button_a.is_pressed() and button_b.is_pressed():
display.scroll("MIN:" + str(min_temp))
display.scroll("MAX:" + str(max_temp))
sleep(300)
Kako projekat funkcioniše?
- Program stalno meri temperaturu
- Pamti najnižu i najvišu vrednost
- Kompas daje orijentaciju u stepenima
- Dugmad biraju šta želimo da vidimo
Vizuelno objašnjenje (tok programa)
START
↓
očitaj temperaturu
↓
ažuriraj MIN i MAX
↓
da li je pritisnuto dugme?
↓ ↓
A B
prikaži prikaži
temp. pravac
Proširena verzija — Upozorenja
Dodaj upozorenja za ekstremne temperature:
if trenutna > 30:
display.show(Image.SKULL)
sleep(1000)
if trenutna < 5:
display.show(Image.SAD)
sleep(1000)
Eksperiment za čas
- Dodirni micro:bit prstima i prati MAX temperaturu
- Iznesi ga pored prozora (hladnije mesto)
- Uporedi rezultate između grupa učenika
Zadaci za samostalan rad
Zadatak 1
Prikaži strelicu severa kada je dugme B pritisnuto, umesto brojčane vrednosti.
Zadatak 2
Dodaj "reset meteorološke stanice" kada se micro:bit protrese.
Zadatak 3 (izazov)
Ako je temperatura iznad 28°C i uređaj je okrenut ka jugu — prikaži poruku "TOPLO NA JUGU".
Obrazovni ciljevi
- Kombinovanje više senzora
- Rad sa minimum/maximum logikom
- Složeni uslovi (AND)
- Projektno razmišljanje
- Povezivanje sa geografijom i fizikom
Mini projekat — Digitalni navigator
U ovom projektu micro:bit postaje mali navigator. Uređaj:
- pokazuje pravac (kompas)
- reaguje na nagib (akcelerometar)
- pomaže da pronađeš zadati smer
Ideja projekta
Zadamo cilj — na primer ISTOK (90°). Micro:bit prikazuje:
- ✓ ako si okrenut ka cilju
- strelicu levo/desno ako treba da se okreneš
- nagib napred/nazad menja režim rada
Osnovna verzija
from microbit import *
CILJ = 90 # Istok
while True:
pravac = compass.heading()
razlika = pravac - CILJ
if abs(razlika) < 10:
display.show(Image.YES)
elif razlika > 0:
display.show(Image.ARROW_W) # treba ulevo
else:
display.show(Image.ARROW_E) # treba udesno
sleep(200)
Kako ovo funkcioniše?
- Kompas daje ugao 0–360°
- Računamo razliku od ciljnog ugla
- Ako je razlika mala → stigli smo
- Ako nije → pokazujemo smer korekcije
Proširena verzija — Nagib menja cilj
Ako nagneš micro:bit:
- ulevo → cilj je ZAPAD (270°)
- udesno → cilj je ISTOK (90°)
- ravan položaj → cilj je SEVER (0°)
from microbit import *
CILJ = 0
while True:
# Promena cilja nagibom
x = accelerometer.get_x()
if x > 300:
CILJ = 90
elif x < -300:
CILJ = 270
else:
CILJ = 0
pravac = compass.heading()
razlika = pravac - CILJ
if abs(razlika) < 10:
display.show(Image.YES)
elif razlika > 0:
display.show(Image.ARROW_W)
else:
display.show(Image.ARROW_E)
sleep(200)
Vizuelno objašnjenje
0° (Sever)
↑
270° ← → 90°
↓
180°
Nagib bira cilj.
Kompas proverava da li si okrenut ka tom cilju.
Mini izazov — Režim istraživača
Dodaj dugme A:
- Dugme A bira nasumičan pravac
- Učenik mora da ga pronađe
from microbit import *
import random
CILJ = 0
while True:
if button_a.was_pressed():
CILJ = random.randint(0, 359)
pravac = compass.heading()
razlika = pravac - CILJ
if abs(razlika) < 10:
display.show(Image.HAPPY)
else:
display.show(Image.ARROW_E)
sleep(200)
Zadaci za samostalan rad
Zadatak 1
Umesto samo levo/desno, dodaj i strelice gore/dole za sever i jug.
Zadatak 2
Dodaj zvučni signal (ako koristiš micro:bit v2) kada je cilj pronađen.
Zadatak 3 (napredni)
Uvedi toleranciju od 5° umesto 10°. Da li je teže pogoditi cilj?
Šta učenici uče?
- Rad sa uglovima (0–360°)
- Računanje razlike vrednosti
- Kombinovanje dva senzora
- Projektno razmišljanje
- Vezu matematike i programiranja
Mini projekat — Igra „Lov na blago“
Micro:bit bira nasumičan pravac (tajnu lokaciju blaga). Tvoj zadatak je da se okrećeš dok ne pronađeš tačan smer.
- Dugme A — započinje novu igru
- Kompas vodi igrača
- Kada je pravac pogođen — pojavljuje se nagrada
Kako igra funkcioniše?
- Micro:bit izabere nasumičan ugao (0–359°)
- Igrač se okreće
- Ako je blizu cilja (±10°) — pronašao je blago
Program
from microbit import *
import random
CILJ = None
TOLERANCIJA = 10
while True:
# Pokretanje nove igre
if button_a.was_pressed():
CILJ = random.randint(0, 359)
display.scroll("GO!")
if CILJ is not None:
pravac = compass.heading()
razlika = abs(pravac - CILJ)
# Korekcija za prelaz preko 0°
if razlika > 180:
razlika = 360 - razlika
if razlika <= TOLERANCIJA:
display.show(Image.DIAMOND)
else:
display.show(Image.ARROW_E)
sleep(200)
Važno objašnjenje — Zašto koristimo 360 - razlika?
Ako je cilj 350°, a kompas pokazuje 10°, razlika nije 340° — već samo 20°.
350° ... 0° ... 10°
← 20° →
Zato koristimo kružno računanje.
Proširena verzija — Toplo / hladno
Umesto jedne strelice, igra može pokazivati koliko si blizu:
- □ — blizu si
- □ — srednje udaljen
- ❄ — daleko
if razlika <= 10:
display.show(Image.DIAMOND)
elif razlika <= 30:
display.show(Image.HAPPY)
elif razlika <= 60:
display.show(Image.ASLEEP)
else:
display.show(Image.SAD)
Napredna verzija — Dodaj nagib
Nagib uređaja može služiti za:
- Promenu težine igre
- Podešavanje tolerancije
x = accelerometer.get_x()
if x > 300:
TOLERANCIJA = 5 # teže
elif x < -300:
TOLERANCIJA = 20 # lakše
else:
TOLERANCIJA = 10
Organizacija časa (aktivnost)
- Učenici rade u parovima
- Jedan drži uređaj i traži blago
- Drugi beleži broj pokušaja
- Pobednik je onaj ko najbrže pronađe pravac
Zadaci za samostalan rad
Zadatak 1
Dodaj brojač pokušaja.
Zadatak 2
Dodaj odbrojavanje vremena (30 sekundi).
Zadatak 3 (napredni)
Ako igrač ne pronađe blago za 30 sekundi — igra se resetuje.
Šta učenici uče?
- Kružno računanje (360°)
- Razliku uglova
- Rad sa nasumičnim vrednostima
- Kombinovanje kompas + akcelerometar
- Razvoj algoritamskog razmišljanja
Skriveni mini kviz — Kompas i temperatura
Proveri da li razumeš kako rade kompas i temperaturni senzor u MicroPython-u.
Otvori kviz
Mini kviz: Kompas i temperatura
1. Koja funkcija vraća pravac kompasa?
2. Koji opseg vrednosti vraća kompas?
3. Koja funkcija meri temperaturu?
4. Šta znači vrednost kompasa 0°?
5. Zašto je potrebna kalibracija kompasa?
Mini projekat — Automatsko svetlo
Ovaj mini projekat povezuje senzor svetla sa LED ili drugim aktuatorom. Ideja: kada je ambijentalno svetlo slabo, uređaj uključuje svetlo; kada je svetla dovoljno, svetlo se isključuje.
from microbit import *
while True:
svetlo = pin0.read_analog() # čitanje sa svetlosnog senzora
if svetlo < 300: # ako je svetlo manje od praga
pin1.write_digital(1) # uključi svetlo
else:
pin1.write_digital(0) # isključi svetlo
sleep(200) # kratka pauza
Šta učiš ovim projektom:
- Čitanje analognih senzora (
read_analog()) - Upravljanje digitalnim izlazom (
write_digital()) - Primena uslovnih naredbi (
if) u realnom projektu - Petlja za stalno izvršavanje (
while True)
Preporuke za dalje
Možeš dodati:
- Više senzora za istovremeno detektovanje svetla i pokreta
- Servo motor koji se pomera kada senzor detektuje mračan prostor
- Mini kviz ili vežbu da proveriš razumevanje analognih i digitalnih signala