Paso 1: Hazlo
¿Qué es?
Usa la radio para detectar cómo de cerca está otro micro:bit y luego haz un juego de búsqueda del tesoro o úsalo para ayudar a la gente a saber que está a una distancia social segura.
Introducción
Guía de codificación
Cómo funciona
- Necesitas al menos 2 micro:bits para esto. Crearemos dos programas diferentes, uno para la baliza que envía constantemente un mensaje de radio de baja potencia. El otro programa va en el receptor.
- Cuando el receptor recibe un mensaje de la baliza, guarda su intensidad en una variable llamada signal y la muestra en su pantalla de LED.
- Las señales de radio se vuelven más fuertes cuanto más cerca está el transmisor, así que si la señal aumenta significa que probablemente el otro micro:bit esté cerca.
- Si la señal es débil, el otro micro:bit posiblemente esté más lejos.
- El micro:bit muestra un gráfico de barras que se agranda cuanto más fuerte es la señal y más cerca esté. Utiliza el bloque matemático map para asignar a la intensidad de señal de radio, que va de -95 (débil) a -42 (fuerte), números en el rango de 0 a 9 que son utilizados para dibujar un gráfico de barras.
Versión de Python
- Python no tiene un gráfico de barras o función de mapa incorporados, así que funciona de una forma algo diferente. Todas las luces LED se encienden cuando te acercas a la baliza, y cuanto más te acerques, más brillan.
- Las lecturas de la intensidad de radio se obtienen con el comando
radio.receive_full()
Éste devuelve el mensaje, la intensidad de la señal de radio y una marca de tiempo. Solo nos interesa saber la fuerza de la señal, por lo que utilizamossignal = message[1]
para extraerla y almacenarla en la variable llamadasignal. - La intensidad de la señal se encuentra en un rango de -98 (más débil) a -45 (más fuerte), y el programa de Python define una función llamada mappara convertir los números en ese rango en unos del 0 al 9 que podemos utilizar para cambiar el brillo de las luces LED: 0 es apagado y 9, el nivel de luz más brillante. (Puede que quieras reutilizar esta función en otros proyectos de Python ya que funciona como el bloque map en MakeCode).
- El programa de Python crea una imagen en blanco de 5x5 llamada light utilizando el comando
light = Image(5,5)
Su brillo cambia con el comandolight.fill()
.
Qué necesitas
- 2 micro:bits con pilas
- Editor de MakeCode o de Python
- pilas (opcionales)
Paso 2: Prográmalo
Transmisor / baliza
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
Paso 3: Mejóralo
- Combina el código de la baliza y el receptor para tener un micro:bit que cumpla ambas funciones.
- Fabrica muñequeras para que puedas llevar tus detectores de proximidad.
- ¿Cómo de fuerte es la señal cuando estás a 1 o dos metros? Modifica el código para que se active una alarma visual o sonora cuando alguien está demasiado cerca.
- Usa estos programas para crear un juego de búsqueda del tesoro: esconde la baliza y coloca el código receptor en una gran cantidad de micro:bits
- Si estás al aire libre o en un lugar grande, experimenta cambiando la potencia del transmisor. Puede ser cualquier número del 0 al 7
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.