Skip to content

Atividade

Pirilampos

Avançado | MakeCode, Python | Ecrã LED, Rádio | Aleatoriedade, Comunicação, Seleção

Passo 1: Faz tu mesmo

Transforma um conjunto de micro:bits num enxame mágico de pirilampos através de comunicação via rádio

um conjunto de micro:bits ativando um ao outro por rádio para piscarem luz

O que vais aprender

  • como usar a comunicação rádio entre micro:bits para desencadear eventos
  • que podes controlar a intensidade da luz do ecrã de LEDs do micro:bit
  • como usar probablidades e números aleatórios para imitar o comportamento do mundo real

O que é isto?

Os pirilampos são insetos que usam a bioluminescência (luz produzida pelos seus corpos) para comunicar entre si.

Este projeto imita o comportamento de pirilampos reais usando função de rádiocomunicação do micro:bit. A versão Python foi criada por Nicholas H. Tollervey, e a versão do MakeCode é baseada nisso.

Carrega o programa em pelo menos três micro:bits na mesma sala. Carrega no botão A em qualquer um dos micro:bits para começar a ver um "enxame" de micro:bits a acender e apagar à medida que vão recebendo uma mensagem de rádio. Isto funciona melhor numa sala escura e com muitos micro:bits.

Quando um dos micro:bits recebe a mensagem rádio, há a possibilidade uma em dez de este transmitir a sua mensagem rádio e iniciar outra onda de luzes a piscar nos outros micro:bits.

Quando as luzes pararem de piscar, carrega no botão A em qualquer um dos micro:bit para reiniciar o "enxame" de comunicação.

Como é que funciona

  • O programa usa a comunicação rádio para enviar uma mensagem "flash" quando carregas no botão A num dos micro:bits.
  • Quando cada micro:bit recebe a mensagem, espera uma quantidade aleatória de tempo entre 50 e 350 milissegundos. Depois pisca o ecrã de LEDs e depois gradualmente vai baixando a intensidade da luz, para imitar o brilho de um pirilampo.
  • Em seguida, gera um número aleatório entre 0 e 9. Se o número é 0, então envia a sua própria mensagem de rádio "flash" (piscar), fazendo com que outros micro:bit pirilampos pisquem. Por isso, tem uma uma possibilidae em dez de fazer piscar outros micro:bits.
  • Podes usar uma mistura de micro:bits antigos e novos, mas todos devem ter versões semelhantes do MakeCode ou do Python instalados. (Comunicação rádio funciona de forma ligeiramente diferente em cada linguagem de programação. Programas MakeCode não conseguem comunicar via rádio com os programas Python e vice-versa.)

Do que é que precisas

  • pelo menos 3 micro:bits, quanto mais melhor
  • suporte de pilhas do micro:bit (opcional)

Passo 2: Cria o teu código

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

Passo 3: Melhora-o

  • Muda a imagem que aparece quando o ecrã pisca
  • Altera o código para torná-lo aumentar ou diminuir a probabilidade de acionar outro evento "flash" nos outros micro:bits. O intervalo de números aleatórios pode corresponder ao número de micro:bits que estás a usar: aumentar a probabilidade se tiveres menos micro:bits
  • Faz grupos mais pequenos de pirilampos usando diferentes números de grupos de rádio. Apenas os micro:bits com o mesmo número de grupo poderão comunicar entre si.
  • Experimenta mudar a potencia do sinal de rádio.
    Usa o bloco "potência de transmissão de radio'" no MakeCode.
    Em Python usa radio.config(power=7)
    Escolhe um número entre 0 (sinal de rádio mais fraco) e 7 (mais forte).
    O que acontece quando mudas a potencia de rádio?