support for motor commands
This commit is contained in:
parent
07b07a5a3f
commit
83bd1ed3e1
18
libs/core/enums.d.ts
vendored
18
libs/core/enums.d.ts
vendored
@ -240,6 +240,24 @@ declare namespace control {
|
|||||||
}
|
}
|
||||||
declare namespace led {
|
declare namespace led {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare enum MotorCommand {
|
||||||
|
//% block=coast
|
||||||
|
Coast = 0,
|
||||||
|
//% block=break
|
||||||
|
Break = 1,
|
||||||
|
//% block=sleep
|
||||||
|
Sleep = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare enum Motor {
|
||||||
|
A = 0,
|
||||||
|
B = 1,
|
||||||
|
//% block="A and B"
|
||||||
|
AB = 2,
|
||||||
|
}
|
||||||
declare namespace motors {
|
declare namespace motors {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +1,68 @@
|
|||||||
#include "ksbit.h"
|
#include "ksbit.h"
|
||||||
|
|
||||||
|
enum MotorCommand {
|
||||||
|
//% block=coast
|
||||||
|
Coast,
|
||||||
|
//% block=break
|
||||||
|
Break,
|
||||||
|
//% block=sleep
|
||||||
|
Sleep
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Motor {
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
//% block="A and B"
|
||||||
|
AB
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blocks to control the onboard motors
|
* Blocks to control the onboard motors
|
||||||
*/
|
*/
|
||||||
//% color=#008272 weight=30
|
//% color=#008272 weight=30
|
||||||
namespace motors {
|
namespace motors {
|
||||||
/**
|
/**
|
||||||
* Controls the power sent to a single motor
|
* Turns on the motor at a certain percent of power.
|
||||||
* @param power %percent of power sent to the motor. Negative power goes backward. eg: 50
|
* @param power %percent of power sent to the motor. Negative power goes backward. eg: 50
|
||||||
*/
|
*/
|
||||||
//% blockId=motor_on block="motor on at %percent|%"
|
//% blockId=motor_on block="motor on at %percent"
|
||||||
//% parts=dcmotor
|
//% parts=dcmotor weight=90 blockGap=8
|
||||||
void motorOn(int power) {
|
void motorPower(int power) {
|
||||||
uBit.soundmotor.Motor_On(power);
|
uBit.soundmotor.Motor_On(power);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send break, coast or sleep commands to the motor
|
||||||
|
*/
|
||||||
|
//% blockId=motor_command block="motor %command"
|
||||||
|
//% parts=dcmotor weight=85
|
||||||
|
void motorCommand(MotorCommand command) {
|
||||||
|
switch(command) {
|
||||||
|
case MotorCommand::Coast: uBit.soundmotor.Motor_Coast();break;
|
||||||
|
case MotorCommand::Break: uBit.soundmotor.Motor_Break();break;
|
||||||
|
case MotorCommand::Sleep: uBit.soundmotor.Motor_Sleep();break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls two motors attached to the board.
|
||||||
|
*/
|
||||||
|
//% blockId=block_dual_motor block="motor %motor|at %percent"
|
||||||
|
//% weight=80
|
||||||
|
void dualMotorPower(Motor motor, int duty_percent) {
|
||||||
|
switch(motor) {
|
||||||
|
case Motor::A: if (duty_percent <= 0) uBit.soundmotor.MotorA_Off();
|
||||||
|
else uBit.soundmotor.MotorA_On(duty_percent); break;
|
||||||
|
case Motor::B: if (duty_percent <= 0) uBit.soundmotor.MotorB_Off();
|
||||||
|
else uBit.soundmotor.MotorB_On(duty_percent); break;
|
||||||
|
case Motor::AB: if (duty_percent <= 0) {
|
||||||
|
uBit.soundmotor.MotorA_Off();
|
||||||
|
uBit.soundmotor.MotorB_Off();
|
||||||
|
} else {
|
||||||
|
uBit.soundmotor.MotorA_On(duty_percent);
|
||||||
|
uBit.soundmotor.MotorB_On(duty_percent);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
22
libs/core/shims.d.ts
vendored
22
libs/core/shims.d.ts
vendored
@ -517,12 +517,26 @@ declare namespace led {
|
|||||||
declare namespace motors {
|
declare namespace motors {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controls the power sent to a single motor
|
* Turns on the motor at a certain percent of power.
|
||||||
* @param power %percent of power sent to the motor. Negative power goes backward. eg: 50
|
* @param power %percent of power sent to the motor. Negative power goes backward. eg: 50
|
||||||
*/
|
*/
|
||||||
//% blockId=motor_on block="motor on at %percent|%"
|
//% blockId=motor_on block="motor on at %percent"
|
||||||
//% parts=dcmotor shim=motors::motorOn
|
//% parts=dcmotor weight=90 blockGap=8 shim=motors::motorPower
|
||||||
function motorOn(power: number): void;
|
function motorPower(power: number): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send break, coast or sleep commands to the motor
|
||||||
|
*/
|
||||||
|
//% blockId=motor_command block="motor %command"
|
||||||
|
//% parts=dcmotor weight=85 shim=motors::motorCommand
|
||||||
|
function motorCommand(command: MotorCommand): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls two motors attached to the board.
|
||||||
|
*/
|
||||||
|
//% blockId=block_dual_motor block="motor %motor|at %percent"
|
||||||
|
//% weight=80 shim=motors::dualMotorPower
|
||||||
|
function dualMotorPower(motor: Motor, duty_percent: number): void;
|
||||||
}
|
}
|
||||||
declare namespace music {
|
declare namespace music {
|
||||||
|
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
namespace pxsim.motors {
|
namespace pxsim.motors {
|
||||||
export function motorOn(power: number) {
|
export function motorPower(power: number) {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
export function motorCommand(command: MotorCommand) {
|
||||||
|
|
||||||
|
}
|
||||||
|
export function dualMotorPower(motor: Motor, percent: number) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user