Skip to content

Atividade

Vaga-lumes

Avançado | MakeCode, Python | Rádio, Visor LED | Comunicação, Randomização, Seleção

Primeiro passo: o projeto

Transforme um conjunto de micro:bits em um esplêndido enxame de vaga-lumes via comunicação por rádio.

Conjunto de micro:bits acionando um ao outro por rádio para que brilhem brevemente

O que você aprenderá:

  • Como usar a comunicação por rádio entre micro:bits para acionar eventos;
  • Como controlar o brilho do visor LED do micro:bit para torná-lo mais (ou menos) luminoso;
  • Como usar probabilidade e números aleatórios para imitar comportamentos reais.

O que é?

Vaga-lumes são insetos que usam bioluminescência (luminosidade produzida pelos seus corpos) para se comunicar uns com os outros.

Este projeto imita o comportamento de vaga-lumes reais usando o recurso de comunicação por rádio do micro:bit. A versão Python foi criada por Nicholas H. Tollervey, na qual a versão do MakeCode é baseada.

Instale o programa em pelo menos três micro:bits, que devem estar no mesmo local (cômodo). Pressione o botão A em qualquer micro:bit e você poderá ver um "enxame" de micro:bits piscando, à medida que receberem uma mensagem de rádio. Isso funciona melhor em uma sala escura usando vários micro:bits.

Uma vez que um micro:bit receba a mensagem de rádio, há a probabilidade, de um em cada dez, dele transmitir sua própria mensagem de rádio e iniciar uma nova onda de luzes brilhantes nos outros micro:bits.

Quando as luzes finalmente pararem, pressione o botão A em qualquer micro:bit para reiniciar o processo.

Como funciona:

  • O programa usa comunicação via rádio para enviar a mensagem "flash" (brilhar) quando você pressiona o botão A em um dos micro:bits;
  • Quando cada micro:bit recebe a mensagem, eles esperam por um período aleatório entre 50 e 350 milissegundos. Em seguida, o visor LED brilha e apaga gradualmente, imitando o brilho de um vaga-lume;
  • Logo depois, um número aleatório entre 0 e 9 é gerado. Se o número é 0, o micro:bit envia sua própria mensagem de rádio "flash", acionando o brilho em outros micro:bits vaga-lumes. Assim, há uma chance em cada dez de acender mais luzes em outros micro:bits;
  • Você pode usar uma combinação de micro:bits antigos e novos, mas todos devem estar equipados com as versões do MakeCode ou do Python. A comunicação por rádio funciona de forma ligeiramente diferente em cada linguagem de programação. Programas MakeCode não podem se comunicar via rádio com programas Python e vice-versa.

Itens necessários:

  • Pelo menos 3 micro:bits: quanto mais, melhor;
  • Conjunto de baterias (opcional).

Segundo passo: é hora de programar

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

Terceiro passo: vamos deixar o código ainda melhor

  • Altere a imagem exibida quando a tela piscar;
  • Modifique o código para aumentar ou diminuir as chances de ativar o modo vaga-lume em outros micro:bits. O intervalo de números aleatórios pode corresponder ao número de micro:bits disponíveis: aumente a probabilidade se não houver muitos micro:bits;
  • Crie grupos menores de vaga-lumes usando grupos de rádio diferentes. Dessa maneira, apenas os micro:bits com o mesmo número de grupo poderão se comunicar uns com os outros;
  • Tente mudar a intensidade do sinal de rádio.
    Para isso, use o bloco "radio set transmit power" no MakeCode.
    No Python, use o radio.config(power=7)
    e escolha um número entre 0 (sinal de rádio mais fraco) e 7 (sinal mais forte).
    Qual é o efeito ao mudar a intensidade do sinal de rádio?