Skip to content

Activiteit

Vuurvliegjes

Gevorderd | MakeCode, Python | LED scherm, Radio | Communicatie, Selectie, Willekeurig

Stap 1: Maak het

Verander een set micro:bits in een magische gloeiende zwerm vuurvliegjes met behulp van radiocommunicatie

een set micro:bits die elkaar via de radio triggeren om kort te gloeien

Wat je gaat leren

  • hoe radiocommunicatie tussen micro:bits te gebruiken om gebeurtenissen te activeren
  • dat het LED display van de micro:bit helderder en dimmer kan worden gemaakt
  • hoe willekeurige getallen en kansen te gebruiken om gedrag in de echte wereld na te bootsen

Wat is het?

Vuurvliegjes zijn insecten die bioluminescentie (licht gemaakt in hun lichaam) gebruiken om met elkaar te communiceren.

Dit project bootst het gedrag van echte vuurvliegjes na met behulp van de radio communicatiefunctie van de micro:bit. De Python versie is gemaakt door Nicholas H. Tollervey en de MakeCode versie is hierop gebaseerd.

Flash het programma op minimaal drie micro:bits in dezelfde ruimte. Druk op knop A op een micro:bit en je zou een 'zwerm' micro:bits moeten zien oplichten als ze een radiobericht ontvangen. Het werkt het beste in een donkere kamer met veel micro:bits.

Zodra een micro:bit het radiobericht heeft ontvangen, heeft het een kans van één op tien om zijn eigen radiobericht te verzenden en een nieuwe golf van gloeiende lichten in de andere micro:bits te starten.

Wanneer de lichten uiteindelijk stoppen, drukt je op knop A op een micro:bit om de 'zwerm' van communicatie opnieuw te starten.

Zo werkt het

  • Het programma stuurt via radiocommunicatie een bericht 'flash' als je op knop A op een van de micro:bits drukt.
  • Wanneer elke micro:bit het bericht ontvangt, wacht het een willekeurige hoeveelheid tijd tussen 50 en 350 milliseconden. Het laat vervolgens het LED display helder knipperen en geleidelijk dimmen om de gloed van een vuurvlieg na te bootsen.
  • Vervolgens genereert het een willekeurig getal tussen 0 en 9. Als het nummer 0 is, stuurt het zijn eigen 'flash' radiobericht, waardoor meer micro:bit vuurvliegjes gaan gloeien. Dus het heeft een kans van één op tien om meer gloed te veroorzaken in andere micro:bits.
  • Je kunt een combinatie van oude en nieuwe micro:bits gebruiken, maar ze moeten allemaal de MakeCode- of Python-versie van het programma hebben. (Radiocommunicatie werkt in elke programmeertaal iets anders. MakeCode programma's kunnen niet via de radio communiceren met Python programma's en vice versa.)

Benodigdheden

  • minimaal 3 micro:bits, hoe meer hoe beter
  • micro:bit batterij pakketten (optioneel)

Step 2: Codeer het

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

Stap 3: Verbeter het

  • De afbeelding wijzigen die wordt weergegeven wanneer het display knippert
  • Pas de code aan zodat het meer of minder waarschijnlijk is dat een andere flash gebeurtenis in andere micro:bits wordt geactiveerd. Het bereik van willekeurige getallen kan overeenkomen met het aantal micro:bits dat je hebt: maak de kans groter als je minder micro:bits hebt
  • Maak kleinere groepen vuurvliegjes met verschillende radio groep nummers. Alleen de micro:bits met hetzelfde groepsnummer kunnen met elkaar communiceren.
  • Experimenteer met het veranderen van de sterkte van het radiosignaal.
    Gebruik het blok 'zendvermogen van het radiotoestel' in MakeCode.
    Gebruik in Python radio.config(power=7) Kies een getal tussen 0 (zwakste radiosignaal) en 7 (sterkste).
    Welk effect heeft het veranderen van het radiovermogen?