toio コア キューブ
toio コア キューブとは、株式会社ソニー・インタラクティブエンタテインメント製の
32 mm幅のシンプルなロボットです。
(本パーツライブラリは下記リンクで公開されているtoioの技術仕様を元にした非公式な実装です。)
https://toio.github.io/toio-spec/
License
See LICENSE.txt.
isDevice(peripheral)
BLEで受信したアドバタイズ情報をもとに、toio コアキューブかどうかを判定します。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
}
};
await obniz.ble.scan.startWait();
new Toio_CoreCube(peripheral)
BLEで受信したアドバタイズ情報をもとに、インスタンスを作成します。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
}
};
await obniz.ble.scan.startWait();
[await]connectWait()
デバイスに接続します。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
device.ondisconnect = (reason) => {
console.log(reason)
}
await device.connectWait();
console.log("connected");
}
};
await obniz.ble.scan.startWait();
[await]disconnectWait()
センサから切断します。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
await device.disconnectWait();
console.log("disconnected");
}
};
await obniz.ble.scan.startWait();
[await]getPositionWait
toio コア キューブが存在している絶対位置(toio ID)を取得します。
詳細はtoio コア キューブ仕様のPosition IDを参照してください。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
const data = await device.getPositionWait();
console.log(data);
}
};
await obniz.ble.scan.startWait();
出力形式は次のとおりです。
{
posX : 709, // キューブの中心のX座標値
posY : 383, // キューブの中心のY座標値
angle : 306,// キューブの角度
posSensorX : 700, // 読み取りセンサーの X 座標値
posSensorY : 386, // 読み取りセンサーの Y 座標値
posSensorAngle : 306,//読み取りセンサーの角度
}
[await]getMotionWait
toio コア キューブが6軸検出システムによって検出した状態情報を取得します。
詳細はtoio コア キューブ仕様の読み出し操作を参照してください。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
const data = await device.getMotionWait();
console.log(data);
}
};
await obniz.ble.scan.startWait();
出力形式は次のとおりです。
attitudeはtoio コア キューブ仕様の姿勢検出を参照してください。
{
isHorizon : false, // 水平検出(true:水平/false:水平ではない)
isCollision : false, // 衝突検出(true:衝突/false:衝突なし)
isDoubletap : false,// ダブルタップ検出(true:ダブルタップされた/false:ダブルタップなし)
attitude : 3, // 上述リンク参照
}
[await]getBatteryStateWait
toio コア キューブのバッテリー値を取得します。
バッテリー残量は10刻みで取得されます。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
const batteryEquip = await device.getBatteryStateWait();
console.log(batteryEquip);//0~100[%]
}
};
await obniz.ble.scan.startWait();
[await]getButtonStateWait
toio コア キューブのボタン押下の有無を取得します。
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
const isButtonPush = await device.getButtonStateWait();
console.log(isButtonPush);//true:押下された/false:押下されてない
}
};
await obniz.ble.scan.startWait();
[await]moveAround(_leftWheelPower,_rightWheelPower)
toio コア キューブのモータをPosition IDと無関係に動かします。
引数の左から順に、タイヤ(左)、タイヤ(右)の出力となっており、それぞれ-255~255
までの値を受け付けます。
(正の値が入ると前方へ、負の値が入ると後方へまわります。
また、0が入るか引数に値が渡されなければ該当のタイヤが静止します。)
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
await device.moveAroundWait(100, 255);
}
};
await obniz.ble.scan.startWait();
[await]movePositionWait(timeoutSec,moveType, maxWheelPower, wheelPowerType,targetPosX, targetPosY, targetAngle)
toio コア キューブを指定したPosition IDに向かわせます。
引数と挙動はtoio コア キューブ仕様の目標指定付きモーター制御と対応しています。
引数の形式は次のとおりです。
{
timeoutSec:5, //タイムアウト時間
moveType:0, //移動タイプ
maxWheelPower:80, //モーターの最大速度指示値
wheelPowerType:0, //モーターの速度変化タイプ
targetPosX:700, //目標地点のX座標値(toio ID)
targetPosY:386, //目標地点のY座標値(toio ID)
targetAngle:90, //目標地点でのキューブの角度Θ[度]
}
// Javascript Example
await obniz.ble.initWait();
const Toio_CoreCube = Obniz.getPartsClass("toio_CoreCube");
obniz.ble.scan.onfind = async (peripheral) => {
if (Toio_CoreCube.isDevice(peripheral)) {
console.log("find");
const device = new Toio_CoreCube(peripheral);
await device.connectWait();
console.log("connected");
await device.movePositionWait(5, 0, 80, 0, 700, 386, 90);
}
};
await obniz.ble.scan.startWait();
"toio"は、株式会社ソニー・インタラクティブエンタテインメントの登録商標または商標です。
Supported from: obniz.js 3.6.0