Python → Processing → Micro:bit kao gejming kontroler
Završni projekat: Micro:bit kao gejming kontroler
U ovoj lekciji koristićemo micro:bit kao gejming kontroler za igru napravljenu u Processing Python Mode okruženju. Podaci sa senzora nagiba šalju se preko serijske komunikacije, a Processing ih koristi za upravljanje objektima u realnom vremenu. Ovaj projekat povezuje MicroPython, senzore, grafiku i razvoj igara u jednu celinu.
U ovom projektu micro:bit postaje interaktivni kontroler igre. Nagib uređaja kontroliše kretanje, dok tasteri A i B aktiviraju posebne akcije.
Ovo je kompletan real-time sistem koji povezuje: senzore → serijsku komunikaciju → grafičku igru.
Pre nego što nastaviš
Ovaj projekat koristi znanje iz lekcije Vizuelni kontroler nagiba.
Ako još nisi radio serijsku komunikaciju između micro:bit-a i Processing-a, preporučujemo da prvo prođeš tu lekciju.
Cilj projekta
- Micro:bit šalje nagib (X, Y)
- Taster A aktivira boost (brže kretanje)
- Taster B daje poene
- Processing prikazuje igru i upravlja logikom
Micro:bit je “kontroler”, a Processing je “igra”.
Arhitektura sistema
micro:bit (senzori + dugmad)
↓
uart.write("x,y,A,B\n")
↓
USB Serial
↓
Processing (Python Mode)
↓
Igra: kretanje + bodovi + boost
MicroPython kod (micro:bit)
from microbit import *
import utime
while True:
x = accelerometer.get_x()
y = accelerometer.get_y()
a = button_a.is_pressed()
b = button_b.is_pressed()
# slanje 4 vrednosti u jednom redu
uart.write(
str(x) + "," +
str(y) + "," +
str(int(a)) + "," +
str(int(b)) + "\n"
)
utime.sleep(0.05)
x,y,A,B\n- A = boost (0 ili 1)
- B = poeni (0 ili 1)
Processing kod (Python Mode – logika igre)
import processing.serial.*
Serial myPort
xPos = 350
yPos = 250
speedMultiplier = 1
score = 0
def setup():
global myPort
size(700, 500)
print(Serial.list())
myPort = Serial(this, Serial.list()[0], 115200)
myPort.bufferUntil('\n')
def draw():
background(30)
fill(0, 150, 255)
ellipse(xPos, yPos, 50, 50)
fill(255)
textSize(20)
text("Score: " + str(score), 20, 30)
def serialEvent(port):
global xPos, yPos, speedMultiplier, score
data = port.readStringUntil('\n')
if data is not None:
data = data.strip()
values = data.split(',')
if len(values) == 4:
x = float(values[0])
y = float(values[1])
a = int(values[2])
b = int(values[3])
# boost
speedMultiplier = 2 if a == 1 else 1
# kretanje
xPos += (x / 200) * speedMultiplier
yPos += (y / 200) * speedMultiplier
# granice ekrana
xPos = constrain(xPos, 25, width - 25)
yPos = constrain(yPos, 25, height - 25)
# poeni
if b == 1:
score += 5
Kako igra radi?
- Nagib pomera igrača
- Taster A ubrzava kretanje
- Taster B dodaje poene
- Processing obrađuje sve u realnom vremenu
Promeni delilac u kretanju:
xPos += (x / 100) * speedMultiplier
Šta se dešava kada povećavaš ili smanjuješ vrednost?
Šta učenici uče?
- Kako se dizajnira komunikacioni protokol
- Kako se kombinuju više senzora u jednoj poruci
- Kako se podaci parsiraju i validiraju
- Kako se senzor mapira na kretanje
- Osnove dizajna 2D igre
Napredni izazovi
- Dodaj više neprijatelja
- Dodaj život (health system)
- Dodaj restart igre
- Dodaj zvuk pri sudaru
- Dodaj nivoe težine
Zaključak
Ovaj projekat povezuje hardver i softver u jednu celinu:
- micro:bit = senzor i kontroler
- Serial = komunikacioni kanal
- Processing = grafička igra
Učenici prelaze iz “pisanja koda” u razumevanje čitavog interaktivnog sistema.
Kako podaci putuju od micro:bit-a do grafike?
U ovoj lekciji smo videli kako micro:bit šalje podatke preko serial komunikacije.
Sada je važno razumeti šta se dešava “iza scene” — ceo put podataka.
Micro:bit ne pravi grafiku.
On samo šalje podatke, a računar ih interpretira.
Tok podataka u sistemu
micro:bit → UART → USB → računar → Processing → grafika
- micro:bit čita senzore (nagib, temperatura, dugmad)
uart.write()pretvara podatke u tekst- USB kabl prenosi podatke do računara
- Processing čita dolazne poruke
- podaci postaju grafika, animacija ili igra
Šta micro:bit zapravo šalje?
micro:bit ne šalje “grafiku” ili “objekte”, već samo običan tekst.
Primer jednostavnih poruka:
23 24 25
Processing te vrednosti može pretvoriti u:
- kretanje objekta
- graf temperature
- promenu boje ili animaciju
Primer više vrednosti u jednoj poruci
Često se šalju dve ili više vrednosti zajedno:
23,512
To može značiti:
- 23 → temperatura
- 512 → svetlost ili drugi senzor
Zarez je jednostavan “separator” koji omogućava Processing-u da lako razdvoji podatke pomoću
split(',').
Mini eksperiment razumevanja
Ako micro:bit pošalje:
120,-40šta bi moglo da znači:
- prvi broj?
- drugi broj?
Zašto je ovo važno?
Ovo je osnova svih sistema koji povezuju hardver i softver:
- IoT uređaji
- robotika
- igre sa senzorima
- interaktivne instalacije
U svim tim sistemima važi isti princip: uređaj šalje podatke → program ih interpretira.
Šta dalje učimo?
U sledećoj lekciji prelazimo na drugu stranu sistema: Processing program koji prima i crta podatke.
Učićemo:
- kako se čita serial port
- kako se razdvajaju podaci
- kako se pravi real-time grafika
micro:bit = senzor
Processing = mozak + grafika
Skriveni mini kviz — Vizuelna igra (micro:bit ↔ Processing)
Klikni da proveriš da li razumeš ključne koncepte igre: serial komunikaciju, mapiranje nagiba i logiku bodova/sudara.
Otvori kviz
Mini kviz: Vizuelna igra
1. Koji mikro:bit modul koristimo da šaljemo X i Y nagib računaru?
2. Koja linija u Processing kodu čita podatke sa micro:bit-a?
myPort.bufferUntil('\n');
3. Kako se mapira X nagib na horizontalnu poziciju objekta?
4. Kako igra detektuje sudar?
5. Kada igrač dobija poene?
Šta dalje?
U ovoj lekciji naučio si kako da micro:bit šalje podatke o nagibu i kako Processing može da ih pretvori u grafiku u realnom vremenu.
Sledeći korak je da te iste podatke iskoristiš za upravljanje igrom.
Nastavi na projekat: Micro:bit gejming kontroler →
U tom projektu koristićemo nagib micro:bit-a za kontrolu objekata, izbegavanje prepreka i sakupljanje poena.