Mario accelerometer support
This commit is contained in:
parent
e88cec2635
commit
5094c8269f
@ -18,13 +18,15 @@ poweredUP.on("discover", async (hub) => { // Wait to discover hubs
|
||||
await mario.connect(); // Connect to Mario
|
||||
console.log(`Connected to Mario!`);
|
||||
|
||||
const pants = await mario.waitForDeviceByType(PoweredUP.Consts.DeviceType.MARIO_PANTS_SENSOR);
|
||||
pants.on("pants", ({ pants }) => {
|
||||
mario.on("accel", (_, { x, y, z }) => {
|
||||
console.log("Accelerometer", x, y, z);
|
||||
});
|
||||
|
||||
mario.on("pants", (_, { pants }) => {
|
||||
console.log("Pants detected", pants);
|
||||
});
|
||||
|
||||
const barcodeSensor = await mario.waitForDeviceByType(PoweredUP.Consts.DeviceType.MARIO_BARCODE_SENSOR);
|
||||
barcodeSensor.on("barcode", ({ barcode, color }) => {
|
||||
mario.on("barcode", (_, { barcode, color }) => {
|
||||
if (color) {
|
||||
console.log("Color detected", color);
|
||||
} else if (barcode) {
|
||||
|
@ -85,6 +85,7 @@ export enum DeviceType {
|
||||
TECHNIC_COLOR_SENSOR = 61, // Spike Prime
|
||||
TECHNIC_DISTANCE_SENSOR = 62, // Spike Prime
|
||||
TECHNIC_FORCE_SENSOR = 63, // Spike Prime
|
||||
MARIO_ACCELEROMETER = 71,
|
||||
MARIO_BARCODE_SENSOR = 73,
|
||||
MARIO_PANTS_SENSOR = 74,
|
||||
TECHNIC_MEDIUM_ANGULAR_MOTOR_GREY = 75, // Technic Control+
|
||||
|
46
src/devices/marioaccelerometer.ts
Normal file
46
src/devices/marioaccelerometer.ts
Normal file
@ -0,0 +1,46 @@
|
||||
import { Device } from "./device";
|
||||
|
||||
import { IDeviceInterface } from "../interfaces";
|
||||
|
||||
import * as Consts from "../consts";
|
||||
|
||||
/**
|
||||
* @class MarioAccelerometer
|
||||
* @extends Device
|
||||
*/
|
||||
export class MarioAccelerometer extends Device {
|
||||
|
||||
constructor (hub: IDeviceInterface, portId: number) {
|
||||
super(hub, portId, ModeMap, Consts.DeviceType.MARIO_ACCELEROMETER);
|
||||
}
|
||||
|
||||
public receive (message: Buffer) {
|
||||
const mode = this._mode;
|
||||
|
||||
switch (mode) {
|
||||
case Mode.ACCEL:
|
||||
/**
|
||||
* Emits when accelerometer detects movement. Measured in mG.
|
||||
* @event MarioAccelerometer#accel
|
||||
* @type {object}
|
||||
* @param {number} x
|
||||
* @param {number} y
|
||||
* @param {number} z
|
||||
*/
|
||||
const x = message[4];
|
||||
const y = message[5];
|
||||
const z = message[6];
|
||||
this.notify("accel", { x, y, z });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export enum Mode {
|
||||
ACCEL = 0x00
|
||||
}
|
||||
|
||||
export const ModeMap: {[event: string]: number} = {
|
||||
"accel": Mode.ACCEL
|
||||
};
|
@ -13,6 +13,7 @@ import { DuploTrainBaseSpeedometer } from "../devices/duplotrainbasespeedometer"
|
||||
|
||||
import { HubLED } from "../devices/hubled";
|
||||
import { Light } from "../devices/light";
|
||||
import { MarioAccelerometer } from "../devices/marioaccelerometer";
|
||||
import { MarioBarcodeSensor } from "../devices/mariobarcodesensor";
|
||||
import { MarioPantsSensor } from "../devices/mariopantssensor";
|
||||
import { MediumLinearMotor } from "../devices/mediumlinearmotor";
|
||||
@ -419,6 +420,7 @@ export class BaseHub extends EventEmitter {
|
||||
[Consts.DeviceType.DUPLO_TRAIN_BASE_MOTOR]: DuploTrainBaseMotor,
|
||||
[Consts.DeviceType.DUPLO_TRAIN_BASE_SPEAKER]: DuploTrainBaseSpeaker,
|
||||
[Consts.DeviceType.DUPLO_TRAIN_BASE_SPEEDOMETER]: DuploTrainBaseSpeedometer,
|
||||
[Consts.DeviceType.MARIO_ACCELEROMETER]: MarioAccelerometer,
|
||||
[Consts.DeviceType.MARIO_BARCODE_SENSOR]: MarioBarcodeSensor,
|
||||
[Consts.DeviceType.MARIO_PANTS_SENSOR]: MarioPantsSensor,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user