Primeiro passo: o projeto
Transforme um conjunto de micro:bits em um esplêndido enxame de vaga-lumes via comunicação por rádio.
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 oradio.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?
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.