npm i --save nativescript-mip-ble
- 版本:0.2.5
- GitHub:
- NPM: https://npmjs.net.cn/package/nativescript-mip-ble
- 下载
- 昨日:0
- 上周:0
- 上个月:0
NativeScript-mip-ble
此插件旨在与 WowWee MiP 机器人通信。它提供扫描、连接和发出各种命令的功能。
安装插件
从项目的根目录调用以下命令。
tns plugin add nativescript-mip-ble
入门
以下是使用此插件的简要概述。有关更高级的示例,请参阅:简单的 ng2 示例 JS Core 示例 ng2 示例
连接到您的 MiP
在您控制 MiP 之前,您需要先找到它。我们将使用 BluetoothScanner
来实现这一点,它将为我们提供所有可用的 MipDevice
对象。
导入
将以下导入添加到您的 TypeScript 代码中
import { BluetoothScanner } from "nativescript-mip-ble/bluetooth.scanner";
import { MipDevice } from "nativescript-mip-ble/mip-device";
扫描
扫描函数需要一个回调,当发现每个 ble 设备时会被触发,并在扫描完成时返回一个回调。
您可以按如下方式调用它
var devices: Array<MipDevice> = [];
var scanner = new BluetoothScanner();
scanner.scan( (mip) => devices.push(mip))
.then(() => {
console.log("Finished Scanning");
})
这将填充 devices
数组,包含该区域内的所有 ble 设备。
每个 MipDevice
对象包含:name
、UUID
和 status
,您可以用这些信息在屏幕上显示。
在尝试扫描设备之前,请确保您的设备已启用
Bluetooth
。
连接到设备
您只需获取您想要连接的 MipDevice
对象,并调用 connect()
。此函数接受一个回调函数,用于在设备断开连接时触发,并在连接建立时返回一个承诺。
您可以按如下方式调用它
var selectedIndex = 0;
var selectedDevice: MipDevice = devices[selectedIndex];
selectedDevice.connect( (mip) => {
console.log("disconnected from: " + mip.name);
})
.then(() => {
console.log("connected to: " + selectedDevice.name);
})
发送指令
现在您已连接到 MiP,您应该能够调用各种指令来使其移动、更改胸部 LED 的颜色或使其说话。为此,只需使用 mipController
从 MipDevice
。
以下是一些示例
import { Direction, TurnDirection } from "nativescript-mip-ble/mip-types";
// --- MOVE ----
var distance = 10;
//move Fwd
selectedDevice.mipController.distanceDrive(Direction.Forward, distance, TurnDirection.Left, 0);
// move Bwd
selectedDevice.mipController.distanceDrive(Direction.Backward, distance, TurnDirection.Left, 0);
// --- TURN ----
var turnAngle = 45;
//turn left
selectedDevice.mipController.turnLeftByAngle(angle / 5, 0);
//turn Right
selectedDevice.mipController.turnRightByAngle(angle / 5, 0);
// --- SOUND ---
//mute
selectedDevice.mipController.setVolume(0);
//set max volume
selectedDevice.mipController.setVolume(7);
//make noise
var soundIndex = 10; // value from 1 - 106
selectedDevice.mipController.playOneSound(soundIndex, 0, 0);
// --- LED ---
//set Led to red
selectedDevice.mipController.setChestLED(255, 0, 0);
}
//set Led to green
selectedDevice.mipController.setChestLED(0, 255, 0);
}
//set Led to blue
selectedDevice.mipController.setChestLED(0, 0, 255);
}
连续移动
控制机器人运动的最佳方式是使用 drive
函数,该函数指示机器人向给定方向移动一段短时间(50ms)。您需要每隔 50ms 调用此函数,连续发送新指令。
一个很好的例子是使用 nativescript-accelerometer
插件。
以下是使它工作的代码
import { MipDevice } from "nativescript-mip-ble/mip-device";
import {startAccelerometerUpdates, stopAccelerometerUpdates} from "nativescript-accelerometer"
export class AccelerometerComponent {
private turnSpeed: number = 0;
private speed: number = 0;
private selectedDevice: MipDevice;
constructor(mip: MipDevice) {
this.selectedDevice = mip;
}
public startAccelerometer() {
startAccelerometerUpdates( data => {
this.turnSpeed = data.x; // lean left (0 to -1) / right (0 to 1)
this.speed = data.y; // lean forward (0 to -1) / back (0 to 1)
} )
this.startContinousMove();
}
public startContinousMove() {
setInterval( () => {
this.selectedDevice.drive(this.speed, this.turnSpeed);
}, 50);
}
}
修改插件
如果您想修改插件,首先需要正确设置您的环境。首先在根目录下运行,这样您就可以使用示例项目了。
tns install
为 JavaScript core demo
项目重建插件
npm run preparedemo
为 angular demo-ng
项目重建插件
npm run preparedemo-ng
运行示例项目
cd demo
tns platform add android
tns run android
and/or
tns platform add ios
tns platform run ios
运行 demo-ng 示例项目
cd demo-ng
tns platform add android
tns run android
and/or
tns platform add ios
tns platform run ios