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.

⬅ Pogledaj lekciju: Vizuelni kontroler nagiba

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

Ključna ideja:

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)

Format poruke:

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

Eksperiment:

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

Finalni cilj:

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.


Ključna ideja:

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

Zašto zarez?

Zarez je jednostavan “separator” koji omogućava Processing-u da lako razdvoji podatke pomoću split(',').


Mini eksperiment razumevanja


Razmisli:

Ako micro:bit pošalje:
120,-40
šta bi moglo da znači:
  • prvi broj?
  • drugi broj?
Kako bi to pretvorio u kretanje na ekranu?


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

Finalna ideja:

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.