Krok 1: Wykonaj to
Zamień zestaw micro:bits w magiczne świecące stado świetlików używając łączności radiowej
Czego się nauczysz
- jak używać łączności radiowej między micro:bitami do uruchamiania zdarzeń
- że wyświetlacz LED micro:bit może świecić jasniej lub być przyciemniany
- jak używać liczb losowych i szans na naśladowanie zachowań w świecie rzeczywistym
Co to jest?
Świetliki są owadami, które wykorzystują bioluminescencję (światło wytwarzane w ciele) do komunikowania się między sobą.
Ten projekt naśladuje zachowanie prawdziwych świetlików za pomocą funkcji łączności radiowej micro:bit. Wersja w Pythonie została stworzona przez Nicholasa H. Tollerveya, a na niej opiera się wersja MakeCode.
Wgraj program na co najmniej trzy mikro:bity znajdujące się w tym samym pomieszczeniu. Po naciśnięciu przycisku A na dowolnym micro:bicie powinieneś zobaczyć 'rozświetlenie' mikro:bitów włączających się, gdy otrzymają wiadomość radiową. Działa najlepiej w ciemnym pokoju z większą liczbą micro:bitów.
Gdy micro:bit otrzyma wiadomość radiową, ma jedną na dziesięć szans na nadanie własnej wiadomości radiowej i uruchomienie kolejnej fali świateł w innych micro:bitach.
Kiedy światła zostaną ostatecznie wyłączone, naciśnij przycisk A na dowolnym micro:bicie, aby ponownie uruchomić rozproszoną komunikację.
Jak to działa
- Program używa komunikacji radiowej do wysłania wiadomości 'flash' po naciśnięciu przycisku A na jednym z micro:bitów.
- Gdy każdy micro:bit otrzyma wiadomość, czeka losową ilość czasu między 50 a 350 milisekund. Sprawia to, że ekran LED świeci jasno, a następnie stopniowo przyciemnia się, aby naśladować światło świetlika.
- Następnie generuje losową liczbę między 0 a 9. Jeśli liczbą jest 0, wysyła własną wiadomość radiową 'flash', wyzwalając świecenie w większej liczbie micro:bitów. A więc ma jedną na dziesięć szans na wyzwolenie świecenia w większej liczbie micro:bitów.
- Można użyć mieszaniny starych i nowych micro:bitów, ale muszą mieć zainstalowane ten sam program w wersji MakeCode lub Python. (Komunikacja radiowa działa nieco inaczej w każdym języku programowania. Programy MakeCode nie mogą komunikować się przez radio z programami w Pythonie i odwrotnie.)
Czego potrzebujesz
- co najmniej 3 micro:bity, im więcej tym lepiej
- Pakiety baterii micro:bit (opcjonalne)
Krok 2: Napisz program
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
Krok 3: Ulepsz to
- Zmień obraz, który jest wyświetlany podczas migania ekranu
- Zmodyfikuj kod, aby był bardziej lub mniej podatny na wywołanie świecenia w innych micro:bitach. Zakres liczb losowych może odpowiadać liczbie mikro:bitów, które posiadasz: zwiększ prawdopodobieństwo, jeśli masz mniej mikro:bitów
- Zrób mniejsze grupy świetlików używając różnych grup w komunikacji radiowej. Tylko mikro:bity z tym samym numerem grupy będą mogły się ze sobą komunikować.
- Experymentyj ze zmianą mocy sygnału radiowego.
Użyj bloku 'radio ustaw moc przesyłu' w MakeCode.
W Pythonie użyjradio.config(power=7)
Wybierz liczbę pomiędzy 0 (najsłabszy sygnał radiowy) a 7 (najsilniejszy).
Jaki wpływ ma zmiana mocy komunikacji radiowej?
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.