Skip to content

Activitat

Cuques de llum

Expert | MakeCode, Python | Pantalla LED, Ràdio | Aleatorització, Comunicació, Selecció

Pas 1: Crea-ho

Converteix un conjunt de micro:bits en un màgic eixam brillant de cuques de llum mitjançant la comunicació per ràdio

un conjunt de micro:bits que s'activen per ràdio les unes a les altres per brillar breument

Què aprendràs

  • com utilitzar la comunicació per ràdio entre micro:bits per activar esdeveniments
  • que la pantalla LED de la micro:bit es pot fer més brillant i més tènue
  • com utilitzar els nombres aleatoris i l'oportunitat per imitar el comportament del món real

En què consisteix?

Les cuques de llum són insectes que utilitzen la bioluminescència (llum que es fa en el seu cos) per comunicar-se entre elles.

Aquest projecte imita el comportament de lluernes reals mitjançant la funció de comunicació per ràdio de la micro:bit. La versió de Python va ser creada per Nicholas H. Tollervey, i la versió MakeCode es basa en això.

Transfereix el programa en almenys tres micro:bits a la mateixa habitació. Prem el botó A en qualsevol micro:bit i hauries de veure un "eixam" de micro:bits il·luminant-se mentre reben un missatge de ràdio. Funciona millor en una habitació fosca amb moltes micro:bits.

Una vegada que una micro:bit ha rebut el missatge de ràdio, té una possibilitat de cada deu de transmetre el seu propi missatge de ràdio i iniciar una altra onada de llums brillants a les altres micro:bits.

Quan els llums s'acabin, prem el botó A de qualsevol micro:bit per reiniciar l'"eixam" de comunicació.

Com funciona

  • El programa utilitza la comunicació per ràdio per enviar un missatge 'flaix' quan premis el botó A en una de les micro:bits.
  • Quan cada micro:bit rep el missatge, espera una quantitat de temps aleatòria entre 50 i 350 mil·lisegons. Aleshores, fa que la pantalla LED parpellegi i s'atenuï gradualment per imitar la resplendor d'una cuca.
  • A continuació, genera un nombre aleatori entre 0 i 9. Si el número és 0, llavors envia el seu propi missatge de ràdio 'flaix', provocant que més cuques de micro:bit brillin. Per tant, té una possibilitat de cada deu d'activar més resplendors en altres micro:bits.
  • Pots utilitzar una barreja de micro:bits antigues i noves, però tots han de tenir les versions MakeCode o Python del programa transferit. (La comunicació per ràdio funciona de manera lleugerament diferent en cada llenguatge de programació. Els programes MakeCode no es poden comunicar per ràdio amb els de Python i viceversa.)

Què necessites

  • Almenys 3 micro:bits, com més, millor
  • Piles (opcional) micro:bit

Pas 2: Programa-ho

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

Pas 3: Millora-ho

  • Canvia la imatge que es mostra quan la pantalla parpelleja
  • Modifica el programa perquè sigui més o menys probable que desencadeni un altre esdeveniment flaix en altres micro:bits. L'interval de nombres aleatoris podria coincidir amb el nombre de micro:bits que teniu: feu-ho més probable si teniu menys micro:bits
  • Fes grups més petits de cuques de llum amb diferents números de grups de ràdio. Només les micro:bits amb el mateix número de grup podran comunicar-se entre ells.
  • Experimenta amb el canvi de la potència del senyal de ràdio.
    Utilitza el bloc "estableix potència de transmissió de la ràdio" a MakeCode.
    A Python utilitza ràdio.config(power=7)
    Tria un número entre 0 (el senyal de ràdio més feble) i 7 (el més fort).
    Quin efecte té canviar la potència de la ràdio?