Skip to content

Aktywność

Sygnalizator zbliżeniowy

Zaawansowany | MakeCode, Python | Radio, Wyświetlacz LED | Fale radiowe, Komunikacja, Operatory arytmetyczne

Krok 1: Wykonaj to

Co to jest?

Użyj radia, aby wyczuć, jak blisko jest inny micro:bit, a następnie stwórz grę w poszukiwanie skarbów lub użyj go, aby pokazać ludziom, że znajdują się w bezpiecznej odległości społecznej.

Wprowadzenie

Przewodnik po kodowaniu

Jak to działa

  • Potrzebujesz do tego co najmniej 2 micro:bity. Stworzymy dwa różne programy, jeden dla nadajnika (latarni), który stale wysyła wiadomość radiową o niskiej mocy. Drugi program działa na odbiorniku.
  • Gdy odbiornik odbiera wiadomość z nadajnika, przechowuje jej siłę w zmiennej o nazwie sygnał (signal) i pokazuje ją na wyświetlaczu LED.
  • Sygnały radiowe stają się silniejsze bliżej nadajnika, więc jeśli sygnał jest silny, oznacza to, że drugi micro:bit jest prawdopodobnie blisko.
  • Jeśli sygnał radiowy jest słaby, drugi micro:bit prawdopodobnie będzie oddalony.
  • Wyświetla wykres słupkowy, który powiększa się ze wzrostem siły sygnału i kiedy jesteś bliżej nadajnika. Wykorzystuje on blok przelicz z kategorii Matematyka, do przeliczenia siły sygnału radiowego z zakresu od -95 (słaby) do -42 (silny) na zakres od 0 do 9, który możemy użyć do narysowania wykresu słupkowego.

Wersja w Pythonie

  • Python nie ma wbudowanego wykresu słupkowego ani funkcji przeliczania, działa więc nieco inaczej. Wszystkie diody LED włączają się, gdy znajdziesz się blisko nadajnika i im bliżej jesteś tym bardziej się świecą.
  • Pobiera odczyty siły sygnału radiowego za pomocą polecenia radio.receive_full(). Zapewnia to komunikat, natężenia sygnału i znacznik czasu. Chcemy tylko znać natężenie sygnału, więc używamy sygnal = message[1] do rozpoznania tego i przechowywania go w zmiennej o nazwie sygnał.
  • Natężenie sygnału może mieścić się w zakresie od -98 (najsłabszy) do -45 (najsilniejszy), a program w Pythonie definiuje funkcję o nazwie map, aby przekonwertować liczby z tego zakresu na zakres 0 – 9, który możemy wykorzystać do zmiany jasności diod LED: 0 oznacza wyłączoną, 9 to najjaśniejsza dioda LED. (Możesz użyć tej funkcji w innych projektach Pythona, ponieważ działa podobnie, jak blok przelicz w MakeCode).
  • Program w Pythonie tworzy pusty obrazek 5x5 o nazwie światło (light) używając polecenia light = Image(5,5)
    Jego jasność jest zmieniana za pomocą polecenia light.fill()

Czego potrzebujesz

  • 2 micro:bity i pakiety baterii
  • MakeCode lub edytor Pythona
  • pakiet baterii (opcjonalnie)

Krok 2: Zakoduj to

Nadajnik / latarnia

1from microbit import *
2import radio
3radio.config(group=1, power=1)
4radio.on()
5
6while True:
7    radio.send('1')
8    sleep(200)
9

Odbiornik

1from microbit import *
2import radio
3radio.config(group=1)
4radio.on()
5light = Image(5,5) # create an empty image
6
7# function to map signal stength to LED brightness
8def map(value, fromMin, fromMax, toMin, toMax):
9    fromRange = fromMax - fromMin
10    toRange = toMax - toMin
11    valueScaled = float(value - fromMin) / float(fromRange)
12    return toMin + (valueScaled * toRange)
13
14while True:
15    message = radio.receive_full()
16    if message:
17        signal = message[1]
18        brightness = map(signal, -98, -44, 0, 9)
19        light.fill(round(brightness))
20        display.show(light)
21

Krok 3: Ulepsz to

  • Połącz kody nadajnika i odbiornika, aby jeden micro:bit wykonywał oba zadania.
  • Stwórz opaski nadgarstka, aby móc nosić czujki zbliżeniowe.
  • Jak silny jest sygnał, gdy jesteś oddalony o 1 lub 2 metry? Zmodyfikuj kod, aby uruchomić alarm wizualny lub dźwiękowy, gdy ktoś jest zbyt blisko.
  • Użyj tych programów, aby stworzyć grę polowania na skarby: ukryj latarnię i umieść kod odbiornika na wielu micro:bitach
  • Jeśli jesteś na zewnątrz lub w dużej przestrzeni, eksperymentuj poprzez zmianę mocy nadajnika. Może to być dowolna liczba między 0 a 7