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
|
await mario.connect(); // Connect to Mario
|
||||||
console.log(`Connected to Mario!`);
|
console.log(`Connected to Mario!`);
|
||||||
|
|
||||||
const pants = await mario.waitForDeviceByType(PoweredUP.Consts.DeviceType.MARIO_PANTS_SENSOR);
|
mario.on("accel", (_, { x, y, z }) => {
|
||||||
pants.on("pants", ({ pants }) => {
|
console.log("Accelerometer", x, y, z);
|
||||||
|
});
|
||||||
|
|
||||||
|
mario.on("pants", (_, { pants }) => {
|
||||||
console.log("Pants detected", pants);
|
console.log("Pants detected", pants);
|
||||||
});
|
});
|
||||||
|
|
||||||
const barcodeSensor = await mario.waitForDeviceByType(PoweredUP.Consts.DeviceType.MARIO_BARCODE_SENSOR);
|
mario.on("barcode", (_, { barcode, color }) => {
|
||||||
barcodeSensor.on("barcode", ({ barcode, color }) => {
|
|
||||||
if (color) {
|
if (color) {
|
||||||
console.log("Color detected", color);
|
console.log("Color detected", color);
|
||||||
} else if (barcode) {
|
} else if (barcode) {
|
||||||
|
@ -85,6 +85,7 @@ export enum DeviceType {
|
|||||||
TECHNIC_COLOR_SENSOR = 61, // Spike Prime
|
TECHNIC_COLOR_SENSOR = 61, // Spike Prime
|
||||||
TECHNIC_DISTANCE_SENSOR = 62, // Spike Prime
|
TECHNIC_DISTANCE_SENSOR = 62, // Spike Prime
|
||||||
TECHNIC_FORCE_SENSOR = 63, // Spike Prime
|
TECHNIC_FORCE_SENSOR = 63, // Spike Prime
|
||||||
|
MARIO_ACCELEROMETER = 71,
|
||||||
MARIO_BARCODE_SENSOR = 73,
|
MARIO_BARCODE_SENSOR = 73,
|
||||||
MARIO_PANTS_SENSOR = 74,
|
MARIO_PANTS_SENSOR = 74,
|
||||||
TECHNIC_MEDIUM_ANGULAR_MOTOR_GREY = 75, // Technic Control+
|
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 { HubLED } from "../devices/hubled";
|
||||||
import { Light } from "../devices/light";
|
import { Light } from "../devices/light";
|
||||||
|
import { MarioAccelerometer } from "../devices/marioaccelerometer";
|
||||||
import { MarioBarcodeSensor } from "../devices/mariobarcodesensor";
|
import { MarioBarcodeSensor } from "../devices/mariobarcodesensor";
|
||||||
import { MarioPantsSensor } from "../devices/mariopantssensor";
|
import { MarioPantsSensor } from "../devices/mariopantssensor";
|
||||||
import { MediumLinearMotor } from "../devices/mediumlinearmotor";
|
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_MOTOR]: DuploTrainBaseMotor,
|
||||||
[Consts.DeviceType.DUPLO_TRAIN_BASE_SPEAKER]: DuploTrainBaseSpeaker,
|
[Consts.DeviceType.DUPLO_TRAIN_BASE_SPEAKER]: DuploTrainBaseSpeaker,
|
||||||
[Consts.DeviceType.DUPLO_TRAIN_BASE_SPEEDOMETER]: DuploTrainBaseSpeedometer,
|
[Consts.DeviceType.DUPLO_TRAIN_BASE_SPEEDOMETER]: DuploTrainBaseSpeedometer,
|
||||||
|
[Consts.DeviceType.MARIO_ACCELEROMETER]: MarioAccelerometer,
|
||||||
[Consts.DeviceType.MARIO_BARCODE_SENSOR]: MarioBarcodeSensor,
|
[Consts.DeviceType.MARIO_BARCODE_SENSOR]: MarioBarcodeSensor,
|
||||||
[Consts.DeviceType.MARIO_PANTS_SENSOR]: MarioPantsSensor,
|
[Consts.DeviceType.MARIO_PANTS_SENSOR]: MarioPantsSensor,
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user