Skip to content

Aktivnost

Krijesnice

Napredni | MakeCode, Python | LED zaslon, Radio | Komunikacija, Odabir, Randomizacija

1. korak: Napravi

Od skupine micro:bitova s radijskom komunikacijom napravi čarobni roj svijetlećih krijesnica

skupina micro:bitova koji će jedan drugoga radiom uključiti da nakratko zasvijetli

Što ćeš naučiti

  • kako koristiti radijsku komunikaciju micro:bitova kao okidača događanja
  • kako micro:bitov LED zaslon jače ili slabije osvijetliti
  • kako koristiti nasumične brojeve i slučajnost da imitiramo događanja oko nas

Što je to?

Krijesnice su kukci koji međusobno komuniciraju putem bioluminiscencije (svjetlosti koju stvaraju u tijelu).

Ovaj program imitira ponašanje krijesnica tako što koristi micro:bitovu mogućnost radijske komunikacije. Inačicu za Python razvio je Nicholas H. Tollervey, a na njoj se temelji inačica za MakeCode

Flashaj program na barem tri micro:bita u istoj prostoriji. Pritisni tipku A na bilo kojem i vidjet ćeš 'roj' micro:bitova kako se pale kad prime radijsku poruku. To će najbolje izgledati s mnogo micro:bitova u mračnoj sobi.

Kada micro:bit primi radijsku poruku, vjerojatnost je jedan prema deset da će on poslati vlastitu poruku i uključiti svjetlost na drugim micro:bitovima.

Kada se svjetlucanje zaustavi, pritisni tipku A na bilo kojem micro:bitu kako bi se komunikacija 'roja' ponovo uspostavila.

Kako to radi

  • Program radi tako da putem radijske komunikacije pošalje poruku 'flash' kada se pritisne tipka A na jednom od micro:bitova.
  • Svaki od micro:bitova koji prime poruku pričeka neko vrijeme, između 50 i 350 milisekundi. Zatim upali LED zaslon na najjače i postepeno smanjuje sjaj kao što to rade krijesnice.
  • Zatim generira slučajni broj između 1 i 9. Ako taj broj bude 0, tada taj micro:bit šalje vlastitu radijsku poruku 'flash' i tako aktivira druge micro:bitove da zasvijetle. Dakle, njegova je šansa da će aktivirati druge micro:bitove 1 prema 10.
  • Za ovo možeš koristiti i nove i stare micro:bitove zajedno, ali svi oni moraju imati u sebi ili MakeCodeovu ili Pythonovu verziju programa. (Radijska komunikacija različito funkcionira u raznim programskim jezicima. Program u MakeCodeu ne može putem radija komunicirati s programom u Pythonu i obratno.)

Što ti treba

  • bar 3 micro:bita, što više to bolje
  • komplet baterija za micro:bit (po želji)

2. korak: Kodiraj

1# A micro:bit Firefly.
2# By Nicholas H.Tollervey. Released to the public domain.
3import radio
4import random
5from microbit import display, Image, button_a, sleep
6
7# Create the "flash" animation frames. Can you work out how it's done?
8flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
9
10# The radio won't work unless it's switched on.
11radio.on()
12
13# Event loop.
14while True:
15    # Button A sends a "flash" message.
16    if button_a.was_pressed():
17        radio.send('flash')  # a-ha
18    # Read any incoming messages.
19    incoming = radio.receive()
20    if incoming == 'flash':
21        # If there's an incoming "flash" message display
22        # the firefly flash animation after a random short
23        # pause.
24        sleep(random.randint(50, 350))
25        display.show(flash, delay=100, wait=False)
26        # Randomly re-broadcast the flash message after a
27        # slight delay.
28        if random.randint(0, 9) == 0:
29            sleep(500)
30            radio.send('flash')  # a-ha
31            
32

3. korak: Unaprijedi

  • Promijeni sliku koja zasvijetli na zaslonu
  • Promijeni kôd tako da smanjiš ili povećaš vjerojatnost za aktivaciju ostalih micro:bitova. Broj vrijednosti za slučajni odabir može biti jednak broju micro:bitova koje imaš na raspolaganju: napravi da se vjerojatnost poveća ako ima manje micro:bitova
  • Grupiraj krijesnice u manje skupine tako da im dodijeliš različite radijske brojeve. Međusobno će moći komunicirati samo micro:bitovi iz iste radijske grupe.
  • Isprobaj kako djeluje kad mijenjaš snagu radijskoga signala.
    Napravi to u bloku 'radio set transmit power' MakeCodea.
    U Pythonu iskoristi naredbu radio.config(power=7)
    Izaberi neki broj između 0 (najslabiji radijski signal) i 7 (najjači).
    Kako se očituje promjena snage radijskoga signala?