Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
nativescript-mip-ble
Advanced tools
This plugin is designed to communicate with WowWee MiP robots. It provides the functionality to scan, connect and issue various commands.
Call the following command from the root of your project.
tns plugin add nativescript-mip-ble
Here is a brief overview of how to use this plugin. For more advanced examples see: Simple ng2 demo JS Core example ng2 example
Before you take control of your MiP, you need to find it first.
We will use BluetoothScanner
for this, which will provide us with all available MipDevice
objects.
Add the following imports to your TypeScript code:
import { BluetoothScanner } from "nativescript-mip-ble/bluetooth.scanner";
import { MipDevice } from "nativescript-mip-ble/mip-device";
The scan function requires a callback, which is triggered for every ble device found and it returns a callback when the scan is finished.
You can call it as follows:
var devices: Array<MipDevice> = [];
var scanner = new BluetoothScanner();
scanner.scan( (mip) => devices.push(mip))
.then(() => {
console.log("Finished Scanning");
})
This will fill in the devices
array with all ble devices in the area.
Each MipDevice
object contains: name
, UUID
and status
, which you could use to display on the screen.
Make sure to enable
Bluetooth
on your device before trying to scan for devices.
All you need to do is to grab the MipDevice
object you want to connect to and call connect()
.
This function takes a callback function for when the device gets disconnected and it returns a promise when the connection is established.
You could call it as follows:
var selectedIndex = 0;
var selectedDevice: MipDevice = devices[selectedIndex];
selectedDevice.connect( (mip) => {
console.log("disconnected from: " + mip.name);
})
.then(() => {
console.log("connected to: " + selectedDevice.name);
})
Now that you are connected to your MiP, you should be able to call various instructions to make him move, change the color of the chest LED or make him talk.
To do that just use mipController
from the MipDevice
.
Here are a few examples:
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);
}
The best way to control robots movement is to use the drive
function, which instructs the robot to move in a given direction for a short period of 50ms.
You need to call this function at intervals of 50ms contiously sending new instructions.
A good example is to use the nativescript-accelerometer
plugin.
Here is the code you need to make it work:
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);
}
}
If you want to make changes to the plugin, you need first set up your environment correctly. First run at the root first, which will let you then use the demo projects.
tns install
demo
projectnpm run preparedemo
demo-ng
projectnpm run preparedemo-ng
cd demo
tns platform add android
tns run android
and/or
tns platform add ios
tns platform run ios
cd demo-ng
tns platform add android
tns run android
and/or
tns platform add ios
tns platform run ios
FAQs
NativeScript plugin that allows to control a Mip robot.
The npm package nativescript-mip-ble receives a total of 0 weekly downloads. As such, nativescript-mip-ble popularity was classified as not popular.
We found that nativescript-mip-ble demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.