Skip to content

Aktivnost

Signal udaljenosti

Napredni | MakeCode, Python | LED zaslon, Radio | Aritmetički operatori, Komunikacija, Radiovalovi

1. korak: Napravi

Što je to?

Pomoću radija ustanovi koliko ti je blizu neki drugi micro:bit pa onda zaigraj igru lova na skriveno blago ili iskoristi taj podatak da ljudima potvrdiš da se međusobno nalaze na sigurnoj udaljenosti.

Uvod

Vodič za kodiranje

Kako to radi

  • Potrebna su ti najmanje 2 micro:bita. Napravit ćemo dva različita programa, jedan za signalni far koji neprestano šalje slabu radijsku poruku. Drugi program radi na prijamniku.
  • Kada prijamnik primi poruku sa signalnog fara, on jačinu te poruke pohrani u varijablu signal i pokaže ju na LED zaslonu.
  • Što si bliže predajniku, to je radijski signal jači, a to znači da što je signal jači, to je drugi micro:bit bliže.
  • Ako je radijski signal slab, to znači da je drugi micro:bit vjerojatno dosta udaljen.
  • On prikazuje grafikon u obliku stupca koji se povećava što je signal jači i što se nalaziš bliže. Koristi se blok matematičkog mapiranja u kojem se jačine radijskih signala raspona od -95 (slabi) do -42 (jaki) pretvaraju u vrijednosti od 0 do 9 iz kojih se može izraditi stupčasti grafikon.

Verzija u Pythonu

  • Python nema ugrađene funkcije grafikona i mapiranja pa se tu proces odvija drukčije. Kada se približiš signalnom faru, sve se LED-ice upale i svijetle sve jače što se više približavaš.
  • Putem komande radio.receive_full() očitavaju se vrijednosti jačine radijskog signala. Na taj se način dobije poruka, jačina signala i vremenska točka. Nas zanima samo jačina signala, a to izvučemo iz signal = poruka[1] i pohranimo u varijablu signal.
  • Jačina signala može biti u rasponu od -98 (najslabiji) do -45 (najjači), a program u Pythonu definira funkciju koja se zove mapiranje i koja te vrijednosti pretvara u vrijednosti u rasponu od 0 do 9 pomoću kojih se određuje jačina svjetlosti LED-ica: 0 znači ugašeno, a 9 znači najsjajnije. (Ovu funkciju možeš iskoristiti i u drugim Pythonovim projektima jer se ona vrlo malo razlikuje od MakeCode bloka map).
  • Program u Pythonu kreira praznu sliku veličine 5x5 koja se zove svjetlost koristeći naredbu svjetlost = slika(5,5).
    Jačina svjetlosti mijenja se naredbom svjetlost.fill().

Što ti treba

  • 2 micro:bita i kompleta baterija
  • Uređivač MakeCode ili Python
  • baterije (prema potrebi)

2. korak: Kodiraj

Predajnik / signalni far

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

Prijamnik

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. korak: Unaprijedi

  • Spoji kôd za signalni far s onim za prijamnik tako da jedan micro:bit obavlja obje funkcije.
  • Napravi narukvice tako da detektor blizine možeš nositi sa sobom.
  • Koliko je signal jak kada si udaljen na 1 do 2 metra? Podesi program tako da se oglasi vizualni ili čujni alarm ako ti se netko previše približi.
  • Iskoristi ove programe za igranje potrage za blagom: sakrij signalni far, a na mnogo micro:bitova stavi prijamnike.
  • Ako se nalaziš na širokom vanjskom prostoru, pokušaj eksperimentirati s promjenama snage predajnika. Neka to bude neki broj od 0 do 7.