Pas 1: Crea-ho
En què consisteix?
Utilitza la ràdio per percebre la proximitat d'una altra micro:bit i llavors fes un joc de caça del tresor o utilitza-la per ajudar a les persones per saber si estan a una distància social segura.
Introducció
Guia de codificació
Com funciona
- Necessites almenys 2 micro:bits per a això. Crearem dos programes diferents, un per a la balisa que envia constantment un missatge de ràdio de baixa potència. L'altre programa va al receptor.
- Quan el receptor rep un missatge des d'una balisa, desa la força del senyal en una variable anomenada "senyal (signal)" i la mostra en la pantalla LED .
- Els senyals de ràdio es fan més forts com més a prop estiguis del transmissor, de manera que si el senyal és fort, vol dir que probablement l'altra micro:bit està a prop.
- Si el senyal de ràdio és feble, probablement l'altra micro:bit estigui més lluny.
- La pantalla mostra un gràfic de barres que es fa més gran com més forta és el senyal i més a la vora estàs. Utilitza el bloc matemàtic "transforma" per assignar números proporcionals a la intensitat del senyal de ràdio, que va des de -95 (feble) fins a -42 (fort). Aquests números, en l'interval de 0 a 9 es fan servir per dibuixar un gràfic de barres.
Versió de Python
- Python no té un gràfic de barres ni una funció de mapa integrada, de manera que funciona una mica diferent. Tots els leds s'il·luminen quan t'acostes a la balisa, i com més t'apropes, més brillants son.
- Les lectures de la intensitat de la ràdio s'obtenen mitjançant la instrucció
"radio.receive_full()"
. Això retorna el missatge, la intensitat del senyal i una marca de temps. Només volem saber la intensitat del senyal, així que fem servir"signal = missatge[1]"
per recuperar-la i emmagatzemar-la en una variable anomenada "signal (senyal)". - La intensitat del senyal pot variar entre -98 (més feble) i -45 (més forta) i el programa Python defineix una funció anomenada "map(escala)" per convertir els números d'aquest interval al interval 0 – 9 que pots utilitzar per canviar la brillantor dels leds: 0 significa apagat, 9 és la brillantor màxima que pot tenir un LED. (És possible que vulguis reutilitzar aquesta funció en altres projectes Python, ja que funciona igual que el bloc "map(escala)" de MakeCode).
- El programa de Python crea una imatge en blanc de 5x5 anomenada "light (llum)" mitjançant la instrucció
"light = Image(5,5)"
La seva brillantor es canvia mitjançant la instrucció"light.fill()"
.
Què necessites
- 2 micro:bits i piles
- Editor MakeCode o Python
- Piles (opcional)
Pas 2: Programa-ho
Emissor/balisa
Receptor
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
Pas 3: Millora-ho
- Combina el codi de balisa i receptor perquè puguis tenir un micro:bit que faci les dues tasques.
- Fes polseres perquè puguis portar els teus detectors de proximitat.
- Què tan fort és el senyal quan esteu a 1 o 2 metres de distància? Modifica el programa per activar una alarma visual o sonora quan algú estigui massa a prop.
- Utilitza aquests programes per fer un joc de caça del tresor: amaga la balisa i col·loca el programa del receptor en moltes micro:bits
- Si ets a l'aire lliure o en un espai gran, experimenta canviant la potència del transmissor. Pot ser qualsevol nombre del 0 al 7
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.