Added more motor types
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Nathan Kellenicki 2019-12-15 14:07:43 -08:00
parent 1793eb05e0
commit 6a7c4899b4
11 changed files with 152 additions and 20 deletions

View File

@ -24,18 +24,60 @@ poweredUP.on("discover", async (hub) => { // Wait to discover hubs
console.log(`Detached device ${device.type} from ${device.port}`);
});
if (device instanceof PoweredUP.ControlPlusLargeMotor) {
if (
// device instanceof PoweredUP.MoveHubMediumLinearMotor ||
device instanceof PoweredUP.MediumLinearMotor ||
device instanceof PoweredUP.ControlPlusLargeMotor ||
device instanceof PoweredUP.ControlPlusXLargeMotor
) {
const motor = device;
motor.on("rotate", (angle) => {
console.log(`Rotate ${angle}`);
});
await motor.rotateByAngle(9000, 50);
await motor.rotateByAngle(9000, -50);
await motor.rotateByAngle(9000, 50);
await motor.rotateByAngle(9000, -50);
motor.power(100);
await motor.rotateByAngle(900, 50);
await motor.rotateByAngle(900, -50);
await motor.rotateByAngle(900, 50);
await motor.rotateByAngle(900, -50);
motor.setPower(20);
}
if (
device instanceof PoweredUP.SimpleMediumLinearMotor ||
device instanceof PoweredUP.TrainMotor
) {
const motor = device;
motor.setPower(20);
await hub.sleep(1000);
motor.setPower(40);
await hub.sleep(1000);
motor.setPower(60);
await hub.sleep(1000);
motor.setPower(80);
await hub.sleep(1000);
motor.setPower(100);
await hub.sleep(1000);
motor.setPower(60);
await hub.sleep(1000);
motor.setPower(20);
}
if (
device instanceof PoweredUP.Lights
) {
const lights = device;
lights.setBrightness(100);
await hub.sleep(1000);
lights.setBrightness(0);
await hub.sleep(1000);
lights.setBrightness(100);
await hub.sleep(1000);
lights.setBrightness(0);
await hub.sleep(1000);
lights.setBrightness(100);
}
if (device instanceof PoweredUP.ColorDistanceSensor) {

View File

@ -0,0 +1,12 @@
import { Hub } from "./hub";
import * as Consts from "./consts";
import { TachoMotor } from "./tachomotor";
export class MoveHubMediumLinearMotor extends TachoMotor {
constructor (hub: Hub, portId: number) {
super(hub, portId, Consts.DeviceType.MOVE_HUB_MEDIUM_LINEAR_MOTOR);
}
}

View File

@ -26,7 +26,7 @@ export const HubTypeNames = HubType;
/**
* @typedef DeviceType
* @property {number} UNKNOWN 0
* @property {number} BASIC_MOTOR 1
* @property {number} SIMPLE_MEDIUM_LINEAR_MOTOR 1
* @property {number} TRAIN_MOTOR 2
* @property {number} LED_LIGHTS 8
* @property {number} VOLTAGE 20
@ -35,9 +35,9 @@ export const HubTypeNames = HubType;
* @property {number} RGB_LIGHT 23
* @property {number} WEDO2_TILT 34
* @property {number} WEDO2_DISTANCE 35
* @property {number} BOOST_DISTANCE 37
* @property {number} BOOST_TACHO_MOTOR 38
* @property {number} BOOST_MOVE_HUB_MOTOR 39
* @property {number} COLOR_DISTANCE_SENSOR 37
* @property {number} MEDIUM_LINEAR_MOTOR 38
* @property {number} MOVE_HUB_MEDIUM_LINEAR_MOTOR 39
* @property {number} BOOST_TILT 40
* @property {number} DUPLO_TRAIN_BASE_MOTOR 41
* @property {number} DUPLO_TRAIN_BASE_SPEAKER 42
@ -62,8 +62,8 @@ export enum DeviceType {
WEDO2_TILT = 34,
WEDO2_DISTANCE = 35,
COLOR_DISTANCE_SENSOR = 37,
BOOST_TACHO_MOTOR = 38,
BOOST_MOVE_HUB_MOTOR = 39,
MEDIUM_LINEAR_MOTOR = 38,
MOVE_HUB_MEDIUM_LINEAR_MOTOR = 39,
BOOST_TILT = 40,
DUPLO_TRAIN_BASE_MOTOR = 41,
DUPLO_TRAIN_BASE_SPEAKER = 42,

View File

@ -1,4 +1,3 @@
import { BasicMotor } from "./basicmotor";
import { Hub } from "./hub";
import * as Consts from "./consts";

View File

@ -0,0 +1,12 @@
import { Hub } from "./hub";
import * as Consts from "./consts";
import { TachoMotor } from "./tachomotor";
export class ControlPlusXLargeMotor extends TachoMotor {
constructor (hub: Hub, portId: number) {
super(hub, portId, Consts.DeviceType.CONTROL_PLUS_XLARGE_MOTOR);
}
}

View File

@ -12,7 +12,13 @@ import { WeDo2SmartHub } from "./wedo2smarthub";
import { ColorDistanceSensor } from "./colordistancesensor";
import { ControlPlusLargeMotor } from "./controlpluslargemotor";
import { ControlPlusXLargeMotor } from "./controlplusxlargemotor";
import { Device } from "./device";
import { Lights } from "./lights";
import { MediumLinearMotor } from "./mediumlinearmotor";
import { MoveHubMediumLinearMotor } from "./MoveHubMediumLinearMotor";
import { SimpleMediumLinearMotor } from "./simplemediumlinearmotor";
import { TrainMotor } from "./trainmotor";
import { isWebBluetooth } from "./utils";
@ -27,9 +33,15 @@ window.PoweredUP = {
PUPRemote,
DuploTrainBase,
Consts,
Device,
ColorDistanceSensor,
ControlPlusLargeMotor,
ControlPlusXLargeMotor,
Device,
Lights,
MediumLinearMotor,
MoveHubMediumLinearMotor,
SimpleMediumLinearMotor,
TrainMotor,
isWebBluetooth
};

View File

@ -12,7 +12,13 @@ import { WeDo2SmartHub } from "./wedo2smarthub";
import { ColorDistanceSensor } from "./colordistancesensor";
import { ControlPlusLargeMotor } from "./controlpluslargemotor";
import { ControlPlusXLargeMotor } from "./controlplusxlargemotor";
import { Device } from "./device";
import { Lights } from "./lights";
import { MediumLinearMotor } from "./mediumlinearmotor";
import { MoveHubMediumLinearMotor } from "./MoveHubMediumLinearMotor";
import { SimpleMediumLinearMotor } from "./simplemediumlinearmotor";
import { TrainMotor } from "./trainmotor";
import { isWebBluetooth } from "./utils";
@ -27,8 +33,14 @@ export {
PUPRemote,
DuploTrainBase,
Consts,
Device,
ColorDistanceSensor,
ControlPlusLargeMotor,
ControlPlusXLargeMotor,
Device,
Lights,
MediumLinearMotor,
MoveHubMediumLinearMotor,
SimpleMediumLinearMotor,
TrainMotor,
isWebBluetooth
};

View File

@ -3,7 +3,12 @@ import { Hub } from "./hub";
import { ColorDistanceSensor } from "./colordistancesensor";
import { ControlPlusLargeMotor } from "./controlpluslargemotor";
import { ControlPlusXLargeMotor } from "./controlplusxlargemotor";
import { Lights } from "./lights";
import { MediumLinearMotor } from "./mediumlinearmotor";
import { MoveHubMediumLinearMotor } from "./MoveHubMediumLinearMotor";
import { SimpleMediumLinearMotor } from "./simplemediumlinearmotor";
import { TrainMotor } from "./trainmotor";
import * as Consts from "./consts";
@ -287,9 +292,24 @@ export class LPF2Hub extends Hub {
case Consts.DeviceType.LED_LIGHTS:
device = new Lights(this, portId);
break;
case Consts.DeviceType.TRAIN_MOTOR:
device = new TrainMotor(this, portId);
break;
case Consts.DeviceType.SIMPLE_MEDIUM_LINEAR_MOTOR:
device = new SimpleMediumLinearMotor(this, portId);
break;
case Consts.DeviceType.MOVE_HUB_MEDIUM_LINEAR_MOTOR:
device = new MoveHubMediumLinearMotor(this, portId);
break;
case Consts.DeviceType.MEDIUM_LINEAR_MOTOR:
device = new MediumLinearMotor(this, portId);
break;
case Consts.DeviceType.CONTROL_PLUS_LARGE_MOTOR:
device = new ControlPlusLargeMotor(this, portId);
break;
case Consts.DeviceType.CONTROL_PLUS_XLARGE_MOTOR:
device = new ControlPlusXLargeMotor(this, portId);
break;
case Consts.DeviceType.COLOR_DISTANCE_SENSOR:
device = new ColorDistanceSensor(this, portId);
break;

12
src/mediumlinearmotor.ts Normal file
View File

@ -0,0 +1,12 @@
import { Hub } from "./hub";
import * as Consts from "./consts";
import { TachoMotor } from "./tachomotor";
export class MediumLinearMotor extends TachoMotor {
constructor (hub: Hub, portId: number) {
super(hub, portId, Consts.DeviceType.MEDIUM_LINEAR_MOTOR);
}
}

View File

@ -38,7 +38,7 @@ export class TachoMotor extends BasicMotor {
/**
* Rotate a motor by a given angle.
* @method TachoMotor#setMotorAngle
* @method TachoMotor#rotateByAngle
* @param {number} angle How much the motor should be rotated (in degrees).
* @param {number} [power=100] For forward, a value between 1 - 100 should be set. For reverse, a value between -1 to -100.
* @returns {Promise} Resolved upon successful completion of command (ie. once the motor is finished).

View File

@ -7,7 +7,12 @@ import { Hub } from "./hub";
import { ColorDistanceSensor } from "./colordistancesensor";
import { ControlPlusLargeMotor } from "./controlpluslargemotor";
import { ControlPlusXLargeMotor } from "./controlplusxlargemotor";
import { Lights } from "./lights";
import { MediumLinearMotor } from "./mediumlinearmotor";
import { MoveHubMediumLinearMotor } from "./MoveHubMediumLinearMotor";
import { SimpleMediumLinearMotor } from "./simplemediumlinearmotor";
import { TrainMotor } from "./trainmotor";
import * as Consts from "./consts";
@ -279,9 +284,15 @@ export class WeDo2SmartHub extends Hub {
case Consts.DeviceType.LED_LIGHTS:
device = new Lights(this, portId);
break;
case Consts.DeviceType.CONTROL_PLUS_LARGE_MOTOR:
device = new ControlPlusLargeMotor(this, portId);
break;
// case Consts.DeviceType.BOOST_TACHO_MOTOR:
// device = new BoostTachoMotor(this, portId);
// break;
// case Consts.DeviceType.CONTROL_PLUS_LARGE_MOTOR:
// device = new ControlPlusLargeMotor(this, portId);
// break;
// case Consts.DeviceType.CONTROL_PLUS_XLARGE_MOTOR:
// device = new ControlPlusXLargeMotor(this, portId);
// break;
case Consts.DeviceType.COLOR_DISTANCE_SENSOR:
device = new ColorDistanceSensor(this, portId);
break;