BBCのmicro:bit v2を入手したので、ちょっとためしてみた。作成したのは、Bluetoothをつかっで通知を送るもの。micro:bit v2にあるマイクで音を拾い、閾値以上であれば、「Bluetooth UIDをアドバタイズ」を実行する。これは、実は、EddyStone Beaconになっている。Windows10には、EddyStone Beaconを受信する機能がないので、別途作成した。「Windows10でEddyStone Beaconを受信する その1」を参照してほしい。
List01が、上記のBeaconを送信するmicro:bit v2のプログラムのJavaScriptソースである。List01
input.onButtonPressed(Button.A, function () { 閾値 += 8 if (閾値 >= 255) { 閾値 = 255 } input.setSoundThreshold(SoundThreshold.Loud, 閾値) bluetooth.advertiseUid( name_space, 閾値, 7, false ) basic.showArrow(ArrowNames.North) basic.showNumber(Math.round(Math.map(閾値, 0, 255, 0, 9))) basic.pause(BeaconCycle) basic.clearScreen() bluetooth.stopAdvertising() }) input.onLogoEvent(TouchButtonEvent.Pressed, function () { 閾値 = 128 input.setSoundThreshold(SoundThreshold.Loud, 閾値) bluetooth.advertiseUid( name_space, 閾値, 7, false ) basic.showArrow(ArrowNames.East) basic.showNumber(Math.round(Math.map(閾値, 0, 255, 0, 9))) basic.pause(BeaconCycle) basic.clearScreen() bluetooth.stopAdvertising() }) input.onSound(DetectedSound.Loud, function () { 音 = input.soundLevel() Event_Time = input.runningTime() basic.showNumber(Math.round(Math.map(音, 0, 255, 0, 9))) }) input.onButtonPressed(Button.B, function () { 閾値 += -8 if (閾値 <= 0) { 閾値 = 0 } input.setSoundThreshold(SoundThreshold.Loud, 閾値) bluetooth.advertiseUid( name_space, 閾値, 7, false ) basic.showArrow(ArrowNames.South) basic.showNumber(Math.round(Math.map(閾値, 0, 255, 0, 9))) basic.pause(BeaconCycle) basic.clearScreen() bluetooth.stopAdvertising() }) let 音 = 0 let Event_Time = 0 let BeaconCycle = 0 let name_space = 0 let 閾値 = 0 bluetooth.setTransmitPower(7) 閾値 = 128 let Instance = 0 name_space = 2155971203 BeaconCycle = 2000 Event_Time = input.runningTime() input.setSoundThreshold(SoundThreshold.Loud, 閾値) basic.showIcon(IconNames.Yes) bluetooth.advertiseUid( name_space, Event_Time * 65536 + 65535, 7, false ) basic.pause(BeaconCycle) bluetooth.stopAdvertising() basic.forever(function () { if (音 > 0) { bluetooth.advertiseUid( name_space, Event_Time * 65536 + 音, 7, false ) if (Event_Time + BeaconCycle < input.runningTime()) { 音 = 0 bluetooth.stopAdvertising() basic.clearScreen() } } })
上記プログラムをmicro:bit v2で動作させると、音が鳴ったときに、Bluetooth UIDをアドバタイズが実行されるが、これは、EddyStoneというBeaconそのものだ。micro:bitの左右のボタンで音の閾値を上下でき、中央上のタッチボタンで閾値をデフォルト値(128)に戻す。音を検出したり、閾値を変更したときには、LEDで表示を行うようになっているほか、閾値の変更もBluetooth UIDアドバタイズで通知するようになっている。
0 件のコメント:
コメントを投稿