144 lines
6.1 KiB
JavaScript
144 lines
6.1 KiB
JavaScript
import * as Blockly from "blockly/core";
|
|
import { getColour } from "../helpers/colour";
|
|
import { selectedBoard } from "../helpers/board";
|
|
import { FieldSlider } from "@blockly/field-slider";
|
|
|
|
/**
|
|
* Servo Motor
|
|
*
|
|
*/
|
|
Blockly.Blocks["sensebox_motors_beginServoMotor"] = {
|
|
init: function () {
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_beginServoMotor);
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_beginServoMotor_pin)
|
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "pin")
|
|
.setAlign(Blockly.ALIGN_RIGHT);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_beginServoMotor_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_beginServoMotor_helpurl);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_motors_moveServoMotor"] = {
|
|
init: function () {
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_moveServoMotor);
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_moveServoMotor_pin)
|
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "pin")
|
|
.setAlign(Blockly.ALIGN_RIGHT);
|
|
this.appendValueInput("degrees", "Number")
|
|
.appendField(Blockly.Msg.sensebox_motors_moveServoMotor_degrees)
|
|
.setAlign(Blockly.ALIGN_RIGHT);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_moveServoMotor_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_moveServoMotor_helpurl);
|
|
},
|
|
};
|
|
|
|
|
|
/**
|
|
* I2C Motor Board
|
|
*
|
|
*/
|
|
Blockly.Blocks["sensebox_motors_I2CMotorBoard_begin"] = {
|
|
init: function () {
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_I2CMotorBoard_begin);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_I2CMotorBoard_begin_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_I2CMotorBoard_begin_helpurl);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_motors_I2CMotorBoard_moveDCMotor"] = {
|
|
init: function () {
|
|
var dropdownOptions = [[Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor_left, '1'],
|
|
[Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor_right, '2']];
|
|
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor)
|
|
.appendField(new Blockly.FieldDropdown(dropdownOptions), "motor")
|
|
.appendField(Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor_motor);
|
|
this.appendValueInput("speed", "Number")
|
|
.appendField(Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor_speed)
|
|
.setAlign(Blockly.ALIGN_RIGHT);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_I2CMotorBoard_moveDCMotor_helpurl);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_motors_I2CMotorBoard_stopDCMotor"] = {
|
|
init: function () {
|
|
var dropdownOptions = [[Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_left, '1'],
|
|
[Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_right, '2']];
|
|
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor)
|
|
.appendField(new Blockly.FieldDropdown(dropdownOptions), "motor")
|
|
.appendField(Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_motor)
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_helpurl);
|
|
},
|
|
};
|
|
|
|
|
|
/**
|
|
* Stepper Motor
|
|
*
|
|
*/
|
|
Blockly.Blocks["sensebox_motors_beginStepperMotor"] = {
|
|
init: function () {
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_beginStepperMotor);
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_beginStepperMotor_pins);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_RIGHT)
|
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "in1")
|
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "in2")
|
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "in3")
|
|
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPins), "in4");
|
|
this.setFieldValue("1", "in1");
|
|
this.setFieldValue("2", "in2");
|
|
this.setFieldValue("3", "in3");
|
|
this.setFieldValue("4", "in4");
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_beginStepperMotor_rpm)
|
|
.appendField(new FieldSlider(3, 1, 3), "rpm");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_beginStepperMotor_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_beginStepperMotor_helpurl);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_motors_moveStepperMotor"] = {
|
|
init: function () {
|
|
this.appendDummyInput()
|
|
.appendField(Blockly.Msg.sensebox_motors_moveStepperMotor);
|
|
this.appendValueInput("steps", "Number")
|
|
.setAlign(Blockly.ALIGN_RIGHT)
|
|
.appendField(Blockly.Msg.sensebox_motors_moveStepperMotor_step);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setColour(getColour().motors);
|
|
this.setTooltip(Blockly.Msg.sensebox_motors_moveStepperMotor_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_motors_moveStepperMotor_helpurl);
|
|
},
|
|
}; |