added servo and dc motor blocks
This commit is contained in:
parent
dd82781939
commit
de15bcf993
@ -1,6 +1,5 @@
|
||||
import * as Blockly from "blockly/core";
|
||||
import { getColour } from "../helpers/colour";
|
||||
import * as Types from "../helpers/types";
|
||||
import { selectedBoard } from "../helpers/board";
|
||||
import { FieldSlider } from "@blockly/field-slider";
|
||||
|
||||
@ -39,10 +38,9 @@ Blockly.Blocks["sensebox_motors_moveStepperMotor"] = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.sensebox_motors_moveStepperMotor);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.sensebox_motors_moveStepperMotor_step)
|
||||
this.appendValueInput("steps", "Number")
|
||||
.setAlign(Blockly.ALIGN_RIGHT)
|
||||
.appendField(new Blockly.FieldNumber(2048), "steps");
|
||||
.appendField(Blockly.Msg.sensebox_motors_moveStepperMotor_step);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(getColour().sensebox);
|
||||
@ -55,10 +53,91 @@ Blockly.Blocks["sensebox_motors_moveStepperMotor"] = {
|
||||
* 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().sensebox);
|
||||
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().sensebox);
|
||||
this.setTooltip(Blockly.Msg.sensebox_motors_moveStepperMotor_tooltip);
|
||||
this.setHelpUrl(Blockly.Msg.sensebox_motors_moveStepperMotor_helpurl);
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* DC Motor
|
||||
* 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().sensebox);
|
||||
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().sensebox);
|
||||
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().sensebox);
|
||||
this.setTooltip(Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_tooltip);
|
||||
this.setHelpUrl(Blockly.Msg.sensebox_motors_I2CMotorBoard_stopDCMotor_helpurl);
|
||||
},
|
||||
};
|
@ -1,24 +1,73 @@
|
||||
import * as Blockly from "blockly/core";
|
||||
|
||||
/*Stepper Motor Blocks*/
|
||||
/**
|
||||
* Stepper Motor
|
||||
*/
|
||||
Blockly.Arduino.sensebox_motors_beginStepperMotor = function () {
|
||||
var in1 = this.getFieldValue("in1");
|
||||
var in2 = this.getFieldValue("in2");
|
||||
var in3 = this.getFieldValue("in3");
|
||||
var in4 = this.getFieldValue("in4");
|
||||
var rpm = this.getFieldValue("rpm");
|
||||
Blockly.Arduino.libraries_["stepper_motor"] = "#include <Stepper.h>";
|
||||
Blockly.Arduino.libraries_["include_stepper_motor"] = "#include <Stepper.h>";
|
||||
Blockly.Arduino.definitions_["define_stepper_motor"] = `
|
||||
#define SPU 2048 // steps per minute
|
||||
Stepper stepper_motor(SPU, ${in1}, ${in2}, ${in3}, ${in4}); // stepper Motor`;
|
||||
Blockly.Arduino.setupCode_["sensebox_stepper_motor_begin"] =
|
||||
`Motor.setSpeed(${rpm}); // speed in rotations per minute`;
|
||||
Stepper stepper_motor(2048, ${in1}, ${in2}, ${in3}, ${in4}); // stepper Motor with 2048 steps per rotation`;
|
||||
Blockly.Arduino.setupCode_["setup_stepper_motor"] =
|
||||
`stepper_motor.setSpeed(${rpm}); // speed in rotations per minute`;
|
||||
var code = "";
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.Arduino.sensebox_motors_moveStepperMotor = function () {
|
||||
var steps = this.getFieldValue("steps");
|
||||
var code = "stepper_motor.step(2048); // 2048 steps correspond to one rotation";
|
||||
var steps = Blockly.Arduino.valueToCode(this, 'steps', Blockly.Arduino.ORDER_ATOMIC) || '2048';
|
||||
var code = `stepper_motor.step(${steps}); // 2048 steps correspond to one rotation\n`;
|
||||
return code;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Servo Motor
|
||||
*
|
||||
*/
|
||||
Blockly.Arduino.sensebox_motors_beginServoMotor = function () {
|
||||
var pin = this.getFieldValue("pin");
|
||||
Blockly.Arduino.libraries_["include_servo_motor"] = "#include <Servo.h>";
|
||||
Blockly.Arduino.definitions_["define_servo_motor"] = `Servo servo_motor_${pin}; // servo Motor`;
|
||||
Blockly.Arduino.setupCode_["setup_servo_moto"] = `servo_motor_${pin}.attach(${pin}); // attach servo motor to pin ${pin}`;
|
||||
var code = "";
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.Arduino.sensebox_motors_moveServoMotor = function () {
|
||||
var pin = this.getFieldValue("pin");
|
||||
var degrees = Blockly.Arduino.valueToCode(this, 'degrees', Blockly.Arduino.ORDER_ATOMIC) || "90";
|
||||
var code = `servo_motor_${pin}.write(${degrees}); // move servo motor to ${degrees} degrees\n`;
|
||||
return code;
|
||||
};
|
||||
|
||||
/**
|
||||
* I2C Motor Board
|
||||
*
|
||||
*/
|
||||
Blockly.Arduino.sensebox_motors_I2CMotorBoard_begin = function () {
|
||||
Blockly.Arduino.libraries_["include_i2c_motor_board"] = "#include <Grove_I2C_Motor_Driver.h>";
|
||||
Blockly.Arduino.definitions_["define_i2c_motor_board"] = `
|
||||
#define I2C_MOTOR_BOARD_ADDRESS 0x0f // default I2C address of I2C Motor Board`;
|
||||
Blockly.Arduino.setupCode_["setup_i2c_motor_board"] = `
|
||||
Motor.begin(I2C_MOTOR_BOARD_ADDRESS); // Initialize I2C Motor Board`;
|
||||
var code = "";
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.Arduino.sensebox_motors_I2CMotorBoard_moveDCMotor = function () {
|
||||
var motor = this.getFieldValue("motor");
|
||||
var speed = Blockly.Arduino.valueToCode(this, 'speed', Blockly.Arduino.ORDER_ATOMIC) || "50";
|
||||
var code = `Motor.speed(MOTOR${motor}, ${speed}); // set speed of motor\n`;
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.Arduino.sensebox_motors_I2CMotorBoard_stopDCMotor = function () {
|
||||
var motor = this.getFieldValue("motor");
|
||||
var code = `Motor.stop(MOTOR${motor}); // stop motor\n`;
|
||||
return code;
|
||||
};
|
@ -5,14 +5,45 @@ export const MOTORS = {
|
||||
*/
|
||||
|
||||
sensebox_motors_beginStepperMotor: "Initialize Stepper Motor (28BYJ-48)",
|
||||
sensebox_motors_beginStepperMotor_rpm: "Rotations per Minute",
|
||||
sensebox_motors_beginStepperMotor_pins: "Input Pins",
|
||||
sensebox_motors_beginStepperMotor_rpm: "Rotations per Minute:",
|
||||
sensebox_motors_beginStepperMotor_pins: "Input Pins (IN1-IN4):",
|
||||
sensebox_motors_beginStepperMotor_tooltip: "TODO",
|
||||
sensebox_motors_beginStepperMotor_helpurl: "TODO",
|
||||
sensebox_motors_beginStepperMotor_step: "TODO",
|
||||
|
||||
sensebox_motors_moveStepperMotor: "Move Stepper Motor (28BYJ-48)",
|
||||
sensebox_motors_moveStepperMotor_step: "Steps:",
|
||||
sensebox_motors_moveStepperMotor_step: "Steps (2048 steps equal a full rotation):",
|
||||
sensebox_motors_moveStepperMotor_tooltip: "TODO",
|
||||
sensebox_motors_moveStepperMotor_helpurl: "TODO",
|
||||
}
|
||||
|
||||
sensebox_motors_beginServoMotor: "Initialize Servo Motor",
|
||||
sensebox_motors_beginServoMotor_pin: "Pin:",
|
||||
sensebox_motors_beginServoMotor_tooltip: "TODO",
|
||||
sensebox_motors_beginServoMotor_helpurl: "TODO",
|
||||
|
||||
sensebox_motors_moveServoMotor: "Move Servo Motor",
|
||||
sensebox_motors_moveServoMotor_pin: "Pin:",
|
||||
sensebox_motors_moveServoMotor_degrees: "Degrees:",
|
||||
sensebox_motors_moveStepperMotor_tooltip: "TODO",
|
||||
sensebox_motors_moveStepperMotor_helpurl: "TODO",
|
||||
|
||||
sensebox_motors_I2CMotorBoard_begin: "Initialize I2C Motor Board",
|
||||
sensebox_motors_I2CMotorBoard_begin_tooltip: "TODO",
|
||||
sensebox_motors_I2CMotorBoard_begin_helpurl: "TODO",
|
||||
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor: "Move",
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor_left: "left",
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor_right: "right",
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor_motor: "DC Motor at I2C Motor Board",
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor_speed: "Speed (between -100 and 100):",
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor_tooltip: "TODO",
|
||||
sensebox_motors_I2CMotorBoard_moveDCMotor_helpurl: "TODO",
|
||||
|
||||
sensebox_motors_I2CMotorBoard_stopDCMotor: "Stop ",
|
||||
sensebox_motors_I2CMotorBoard_stopDCMotor_left: "left",
|
||||
sensebox_motors_I2CMotorBoard_stopDCMotor_right: "right",
|
||||
sensebox_motors_I2CMotorBoard_stopDCMotor_motor: "DC Motor at I2C Motor Board",
|
||||
sensebox_motors_I2CMotorBoard_stopDCMotor_tooltip: "TODO",
|
||||
sensebox_motors_I2CMotorBoard_stopDCMotor_helpurl: "TODO",
|
||||
};
|
||||
|
||||
|
@ -301,8 +301,11 @@ class Toolbox extends React.Component {
|
||||
<Category name="Motors" colour={getColour().sensebox}>
|
||||
<Block type="sensebox_motors_beginStepperMotor" />
|
||||
<Block type="sensebox_motors_moveStepperMotor" />
|
||||
<Block type="sensebox_motors_beginStepperMotor" />
|
||||
<Block type="sensebox_motors_beginStepperMotor" />
|
||||
<Block type="sensebox_motors_beginServoMotor" />
|
||||
<Block type="sensebox_motors_moveServoMotor" />
|
||||
<Block type="sensebox_motors_I2CMotorBoard_begin" />
|
||||
<Block type="sensebox_motors_I2CMotorBoard_moveDCMotor" />
|
||||
<Block type="sensebox_motors_I2CMotorBoard_stopDCMotor" />
|
||||
</Category>
|
||||
{/* <Category name="Telegram" colour={getColour().sensebox}>
|
||||
<Block type="sensebox_telegram" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user