Skip to content

Активност

Близина светионика

Напредно | MakeCode, Python | Лед екран, Радио | Аритметички оператори, Комуникација, Радио таласи

Корак 1: Уради

Шта је ово?

Користите радио-везу како бисте утврдили колико је близу неки други micro:bit, па онда играјте игру лов на скривено благо или је користите како бисте људима помогли да знају да су на сигурној социјалној удаљености.

Увод

Водич за програмирање

Како то ради

  • За ово вам је потребно најмање 2 micro:bit-а. Креираћемо два различита програма, један за предајник који непрекидно шаље радио поруку мале снаге. Други програм је за пријемник.
  • Када пријемник прими поруку од предајника, он чува његову јачину у променљивој која се назива сигнал и приказује је на лед екрану.
  • Радио сигнали постају све јачи што сте ближи предајнику, а то значи да ако је сигнал јак, други micro:bit је вероватно близу.
  • Ако је радио сигнал слаб, други micro:bit је вероватно доста удаљен.
  • Он приказује стубичасти графикон који се увећава што је сигнал јачи и што је микробит ближи. Користите математички блок мапе помоћу кога се јачина радио сигнала од опсега -95 (слаб) до -42 (јак) претвара у вредности до 0 до 9 које можемо да користимо за цртање стубичастих графикон.

Верзија у Python-у

  • У Python-у не постоје уграђене функције за цртање графикона и мапирање па се ти процеси одвијају мало другачије. Када се приближите предајнику, све лед диоде се упале и светле све јаче како му се приближавате.
  • Путем наредбе radio.receive_full() врши се очитавање вреднсти јачине радио сигнала. Ово обезбеђује поруку, јачину сигнала и време. Желимо да знамо само јачину сигнала, а тај део добијамо из сигнал=порука[1] и чувамо у променљивој сигнал.
  • Јачина сигнала може да буде у опсегу од -98 (најслабији) до -45 (најјачи), а у Python програму се дефинише функција која се зове мапа и која те вредности претвара у вредности из опсега од 0 до 9 помоћу којих се одређује јачина светлости лед диода: 0 значи угашено, a 9 значи најсјајније. (Ову функцију можете да користите и у другим Python пројектима јер делују врло слично MakeCode блокумапа).
  • Програм у Python-у креира празну слику величине 5x5 која се зове светлост помоћу наредбе светлост=Слика(5,5).
    Његово осветљење (јачина) се мења помоћу наредбе светлост.fill().

Шта вам је потребно

  • 2 micro:bit-а и паковање батерија
  • MakeCode или Python уређивач
  • батерије (опционално)

Корак 2: Програмирај

Предајник / светионик

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

Пријемник

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

Корак 3: Унапреди

  • Спојите кôд за предајник са кодом за пријемник тако да један micro:bit обавља обе функције.
  • Направите наруквице како бисте могли да носите своје детекторе близине.
  • Колико је јак сигнал када сте удаљени 1 или 2 метра? Измените код да бисте активирали визуелни или звучни аларм када је неко преблизу.
  • Искористите програм за игрицу Потрага за благом: сакријте предајник и поставите пријемни код на неколико micro:bit уређаја
  • Ако сте на отвореном или у великом простору, експериментишите променом јачине предајника. То може бити било који број између 0 и 7