左側のマイクロビット「宝」を家のどこかに隠し、右側のマイクロビットが「レーダー」で、LEDと音を頼りに宝を探します。

レーダーは、電波強度(宝までの距離)を25段階に変換し、対応した位置のLEDを光らせます。
宝が最も遠いとき左上のLEDが点灯し、近くなるほど右側へ、もっと近くなると一段下がって、というようになっています。宝が最も近いと右下のLEDが点灯することになります。

「子供の科学」という僕の大好きな雑誌の、youtube チャンネル、
【プログラミングで宝探し!】micro:bit探検ウォッチキットでそんなことまでできちゃう!?
のアイディアを見てなるほど!と思い、僕も作ってみました。

マイクロビットのプログラムは、
ブロックベースでも、javascript でもどちらでも書くことができて、
いつでも切り替えることができるのですが、今回はじめてjavascript の方を使ってみました。
数式があったりすると、こっちの方が断然らくちんです。

マイクロビット1「宝」のプログラムです。
Aボタンを押すと電波発信、Bボタンで停止します。

let _1なら発信 = 0
input.onButtonPressed(Button.A, function () {
    _1なら発信 = 1
    while (_1なら発信 == 1) {
        radio.sendNumber(0)
        basic.showLeds(`
            . . . . .
            . . . . .
            . . # . .
            . . . . .
            . . . . .
            `)
        basic.pause(100)
        basic.clearScreen()
        basic.pause(900)
    }
})
input.onButtonPressed(Button.B, function () {
    _1なら発信 = 0
    basic.clearScreen()
})
radio.setGroup(1)
basic.forever(function () {
	
})

マイクロビット2「レーダー」のプログラムです。
ボタンAを押すと音も出て、ボタンBを押すと音が出なくなります。

let tone = 0
let y = 0
let x = 0
let val = 0
let b = 0
let a = 0
let signal = 0
let isSound = 0
input.onButtonPressed(Button.B, function () {
    isSound = 0
})
radio.onReceivedNumber(function (receivedNumber) {
    signal = radio.receivedPacket(RadioPacketProperty.SignalStrength)
    signal = -1 * signal
    sig2val222()
    led.plot(x, y)
    if (isSound == 1) {
        tone = (25 - val) * 400
        music.playTone(tone, music.beat(BeatFraction.Sixteenth))
    }
    basic.pause(100)
    basic.clearScreen()
})
function sig2val222() {
    a = -24 / (100 - 44)
    b = -100 * a
    val = a * signal + b
    val = Math.round(val)
    x = val % 5
    y = Math.floor(val / 5)
    if (y > 4) {
        y = 4
    }
}
input.onButtonPressed(Button.A, function () {
    isSound = 1
})
isSound = 1
radio.setGroup(1)

microbit、プログラムを紹介するには、javascript の方が断然便利ですね。なるほど~。scratch もそうなっているといいなぁ。