Skip to content

Aktywność

Świetliki

Zaawansowany | MakeCode, Python | Radio, Wyświetlacz LED | Komunikacja, Losowość, Wybór

Krok 1: Wykonaj to

Zamień zestaw micro:bits w magiczne świecące stado świetlików używając łączności radiowej

zestaw micro:bitów pobudzających się nawzajem drogą radiową, aby na krótko zaświecić

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żyj radio.config(power=7)
    Wybierz liczbę pomiędzy 0 (najsłabszy sygnał radiowy) a 7 (najsilniejszy).
    Jaki wpływ ma zmiana mocy komunikacji radiowej?