モーションセンサー
キューブはモーションセンサー(6 軸検出システム)によってキューブの姿勢や衝突などの状態情報を検出できます。
これらの情報は以下の特性(characteristic)を使うことで取得できます。特性は磁気センサーと同じです。
プロパティ | 値 |
---|---|
Characteristic UUID | 10B20106-5B3B-4571-9508-CF3EFCD7BBAE |
Properties | Write, Read, Notify |
Descriptor | Sensor Information |
書き込み操作
モーションセンサー情報の要求
以下のデータを書き込むことでモーションセンサー情報を要求できます。キューブは要求を受け取ると、必ず 1 回モーションセンサー情報の通知を行います。
データ位置 | タイプ | 内容 | 例 |
---|---|---|---|
0 | UInt8 | 情報の種類 | 0x81 (モーションセンサー情報の要求) |
読み出し操作 / 通知
キューブのモーションセンサーの情報が変化すると、この特性は BLE セントラルに情報を通知します。通知される情報は読み出し操作でも取得できます。
特性は磁気センサーと共通です。磁気センサーの情報も取得されますので、利用の際には磁気センサー - 読み出し操作 / 通知も確認してください。
モーションセンサー情報の取得
キューブのモーションセンサーの情報を以下に示す構成のデータで取得できます。
データ位置 | タイプ | 内容 | 例 |
---|---|---|---|
0 | UInt8 | 情報の種類 | 0x01 (検出) |
1 | UInt8 | 水平検出 | 0x00 (水平ではない) |
2 | UInt8 | 衝突検出 | 0x00 (衝突なし) |
3 | UInt8 | ダブルタップ検出 | 0x00 (ダブルタップなし) |
4 | UInt8 | 姿勢検出 | 0x01 (正位置) |
5 | UInt8 | シェイク検出 | 0x00 (シェイクなし) |
水平検出
キューブが水平な時は0x01
(水平)、キューブが一定の角度(下図の θ)より傾いた時に0x00
(水平ではない)になります。角度のしきい値については設定 - 水平検出のしきい値設定で設定可能です。
ロール方向
ピッチ方向
衝突検出
キューブと何かが衝突したときに0x00
(衝突なし)から0x01
(衝突あり)に変わります。
検出される衝突の大きさのしきい値については設定 - 衝突検出のしきい値設定で設定可能です。
ダブルタップ検出
キューブが一度タップされてから一定時間内に再度タップされると、0x00
(ダブルタップなし)から0x01
(ダブルタップあり)に変わります。タップの時間間隔は設定 - ダブルタップ検出のしきい値設定で設定可能です。また、検出するタップの強さは設定 - 衝突検出のしきい値設定の設定と同じです。
姿勢検出
キューブの水平面に対する姿勢が変化したときに値が変わります。それぞれ値と姿勢の関係は以下のとおりです。
値 | キューブの姿勢 |
---|---|
1 | 天面が上 |
2 | 底面が上 |
3 | 背面が上 |
4 | 正面が上 |
5 | 右側面が上 |
6 | 左側面が上 |
キューブの姿勢: 左から1: 天面が上
と2: 底面が上
キューブの姿勢: 左から3: 背面が上
と4: 正面が上
キューブの姿勢: 左から5: 右側面が上
と6: 左側面が上
シェイク検出
キューブを振ると0x00
(検出なし)から振った強さに応じて0x01
(Level 1)から0x0a
(Level 10)の値に変わります。