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 件のコメント:
コメントを投稿