UNPKG

sensorium

Version:

makeblock mainboards protocol api

86 lines (77 loc) 1.63 kB
import { validateNumber } from '../core/validate'; import { composer, fiterWithBinaryStr } from '../core/utils'; import BaseMotor from './BaseMotor'; import protocolAssembler from '../protocol/cmd'; import Control from '../core/control'; import { SUPPORTLIST } from '../settings'; /** * StepperMotor sensor module * @extends BaseMotor */ class StepperMotor extends BaseMotor { constructor(port) { super(port); Object.assign(this.args, { distance: 0, direction: 1 }) } /** * set distance * @param {Number} speed * @return {Instance} @this */ distance(distance) { this.args.distance = validateNumber(distance, 0); return this; } /** * set direction of stepper motor rotate * @param {Number} type type is 1 or -1. 1 means rotate clockwise, and -1 means anticlockwise * @return {Instance} @this */ direction(type) { if (type !== -1) { type = 1; } this.args.direction = type; return this; } /** * run reversely * @return {Instance} @this */ reverse() { this.speed(-1 * this.args.distance); return this; } /** * getter of protocol */ get protocol() { let buf = composer(protocolAssembler.setStepperMotor, [this.args.port, this.args.speed, this.args.distance * this.args.direction]); return buf; } /** * run */ run() { Control.write(this.protocol); return this; } runAwait() { return Control.writeAwait(this.protocol,arguments); } static get SUPPORT() { return fiterWithBinaryStr(SUPPORTLIST, '0111'); } } export default StepperMotor;