Skip to content

Actividad

Luciérnagas

Avanzado | MakeCode, Python | Pantalla LED, Radio | Aleatorización, Comunicación, Selección

Paso 1: Hazlo

Convierte un conjunto de micro:bits en un enjambre mágico de luciérnagas mediante la comunicación por radio

un conjunto de micro:bits activándose entre sí por radio para brillar brevemente

Qué aprenderás

  • cómo usar la comunicación de radio entre micro:bits para desencadenar eventos
  • que la pantalla LED del micro:bit se puede hacer más brillante y más tenue
  • cómo usar números aleatorios y probabilidades para imitar el comportamiento del mundo real

¿Qué es?

Las luciérnagas son insectos que utilizan la bioluminiscencia (luz hecha en sus cuerpos) para comunicarse entre sí.

Este proyecto imita el comportamiento de luciérnagas reales usando la función de radiocomunicación del micro:bit. La versión de Python fue creada por Nicholas H. Tollervey, y la versión de MakeCode se basa en esto.

Escribe el programa en al menos tres micro:bits en la misma habitación. Pulsa el botón A en cualquier micro:bit y deberías ver un enjambre de micro:bits mientras reciben un mensaje de radio. Funciona mejor en una habitación oscura con muchos micro:bits.

Una vez que un micro:bit ha recibido el mensaje de radio, tiene una de cada diez posibilidades de transmitir su propio mensaje de radio e iniciar otra ola de luces brillantes en los otros micro:bits.

Cuando las luces finalmente se detengan, pulsa el botón A de cualquier micro:bit para reiniciar el "enjambre" de comunicación.

Cómo funciona

  • El programa utiliza la comunicación por radio para enviar un mensaje 'flash' al presionar el botón A en uno de los micro:bits.
  • Cuando un micro:bit recibe el mensaje, espera una cantidad aleatoria de tiempo entre 50 y 350 milisegundos. Esto hace que la pantalla LED parpadee y luego se atenúe gradualmente para imitar el brillo de una luciérnaga.
  • Luego, genera un número aleatorio entre 0 y 9. Si el número es 0, envía su propio mensaje de radio "flash", lo que hace que brillen más luciérnagas micro:bit. Por lo tanto, tiene una posibilidad entre diez de activar más brillos en otros micro:bits.
  • Puedes usar una mezcla de micro:bits antiguos y nuevos, pero todos deben tener las versiones MakeCode o Python del programa incorporado en ellos. (La comunicación por radio funciona de manera ligeramente diferente en cada lenguaje de programación. Los programas de MakeCode no pueden comunicarse por radio con los de Python y viceversa.)

Lo que necesitas

  • al menos 3 micro:bits, cuantos más mejor.
  • paquetes de pilas de micro:bit (opcional)

Paso 2: Prográmalo

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

Paso 3: Mejóralo

  • Cambia la imagen que se muestra cuando la pantalla parpadea
  • Modifica el código para que sea más o menos probable que desencadene otro evento de flash en otros micro:bits. El rango de números aleatorios podría coincidir con el número de micro:bits que tienes, es más probable si tienes menos micro:bits
  • Crea grupos más pequeños de luciérnagas usando diferentes números de grupos de radio. Solo los micro:bits con el mismo número de grupo podrán comunicarse entre sí.
  • Experimente cambiando la potencia de la señal de radio.
    Usa el bloque 'potencia de transmisión de radio' en MakeCode.
    En Python, usa radio.config(power=7)
    Elige un número entre 0 (señal de radio más débil) y 7 (más fuerte).
    ¿Qué efecto tiene cambiar la potencia de la radio?