diff --git a/src/components/Blockly/blocks/index.js b/src/components/Blockly/blocks/index.js index 164fb14..87710ae 100644 --- a/src/components/Blockly/blocks/index.js +++ b/src/components/Blockly/blocks/index.js @@ -6,7 +6,7 @@ import "./sensebox-telegram"; import "./sensebox-osem"; import "./sensebox-web"; import "./sensebox-display"; -import "./sensebox-motor"; +import "./sensebox-motors"; import "./sensebox-lora"; import "./sensebox-led"; import "./sensebox-rtc"; diff --git a/src/components/Blockly/blocks/sensebox-motor.js b/src/components/Blockly/blocks/sensebox-motors.js similarity index 96% rename from src/components/Blockly/blocks/sensebox-motor.js rename to src/components/Blockly/blocks/sensebox-motors.js index b52e538..3df4a76 100644 --- a/src/components/Blockly/blocks/sensebox-motor.js +++ b/src/components/Blockly/blocks/sensebox-motors.js @@ -3,52 +3,6 @@ import { getColour } from "../helpers/colour"; import { selectedBoard } from "../helpers/board"; import { FieldSlider } from "@blockly/field-slider"; -/** - * 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(10, 1, 15), "rpm"); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - this.setColour(getColour().sensebox); - 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().sensebox); - this.setTooltip(Blockly.Msg.sensebox_motors_moveStepperMotor_tooltip); - this.setHelpUrl(Blockly.Msg.sensebox_motors_moveStepperMotor_helpurl); - }, -}; - /** * Servo Motor * @@ -83,8 +37,8 @@ Blockly.Blocks["sensebox_motors_moveServoMotor"] = { 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); + this.setTooltip(Blockly.Msg.sensebox_motors_moveServoMotor_tooltip); + this.setHelpUrl(Blockly.Msg.sensebox_motors_moveServoMotor_helpurl); }, }; @@ -140,4 +94,51 @@ Blockly.Blocks["sensebox_motors_I2CMotorBoard_stopDCMotor"] = { 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().sensebox); + 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().sensebox); + this.setTooltip(Blockly.Msg.sensebox_motors_moveStepperMotor_tooltip); + this.setHelpUrl(Blockly.Msg.sensebox_motors_moveStepperMotor_helpurl); + }, }; \ No newline at end of file diff --git a/src/components/Blockly/generator/index.js b/src/components/Blockly/generator/index.js index f25834a..cc10ff7 100644 --- a/src/components/Blockly/generator/index.js +++ b/src/components/Blockly/generator/index.js @@ -5,7 +5,7 @@ import "./sensebox-telegram"; import "./sensebox-osem"; import "./sensebox-web"; import "./sensebox-display"; -import "./sensebox-motor"; +import "./sensebox-motors"; import "./sensebox-lora"; import "./sensebox-led"; import "./sensebox"; diff --git a/src/components/Blockly/generator/sensebox-motor.js b/src/components/Blockly/generator/sensebox-motors.js similarity index 84% rename from src/components/Blockly/generator/sensebox-motor.js rename to src/components/Blockly/generator/sensebox-motors.js index 616c236..b265039 100644 --- a/src/components/Blockly/generator/sensebox-motor.js +++ b/src/components/Blockly/generator/sensebox-motors.js @@ -1,29 +1,5 @@ import * as Blockly from "blockly/core"; -/** - * 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_["include_stepper_motor"] = "#include "; - Blockly.Arduino.definitions_["define_stepper_motor"] = ` -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 = 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 @@ -31,9 +7,10 @@ Blockly.Arduino.sensebox_motors_moveStepperMotor = function () { */ Blockly.Arduino.sensebox_motors_beginServoMotor = function () { var pin = this.getFieldValue("pin"); + Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include "; Blockly.Arduino.libraries_["include_servo_motor"] = "#include "; - 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}`; + Blockly.Arduino.definitions_[`define_servo_motor_${pin}`] = `Servo servo_motor_${pin}; // servo Motor`; + Blockly.Arduino.setupCode_[`setup_servo_motor_${pin}`] = `servo_motor_${pin}.attach(${pin}); // attach servo motor to pin ${pin}`; var code = ""; return code; }; @@ -50,6 +27,7 @@ Blockly.Arduino.sensebox_motors_moveServoMotor = function () { * */ Blockly.Arduino.sensebox_motors_I2CMotorBoard_begin = function () { + Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include "; Blockly.Arduino.libraries_["include_i2c_motor_board"] = "#include "; Blockly.Arduino.definitions_["define_i2c_motor_board"] = ` #define I2C_MOTOR_BOARD_ADDRESS 0x0f // default I2C address of I2C Motor Board`; @@ -70,4 +48,30 @@ Blockly.Arduino.sensebox_motors_I2CMotorBoard_stopDCMotor = function () { var motor = this.getFieldValue("motor"); var code = `Motor.stop(MOTOR${motor}); // stop motor\n`; return code; +}; + + +/** + * 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_["library_senseBoxIO"] = "#include "; + Blockly.Arduino.libraries_["include_stepper_motor"] = "#include "; + Blockly.Arduino.definitions_["define_stepper_motor"] = ` +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 = 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; }; \ No newline at end of file diff --git a/src/components/Blockly/msg/de.js b/src/components/Blockly/msg/de.js index c4211f7..020b5dd 100644 --- a/src/components/Blockly/msg/de.js +++ b/src/components/Blockly/msg/de.js @@ -7,6 +7,7 @@ import { LOOPS } from "./de/loops"; import { MATH } from "./de/math"; import { MQTT } from "./de/mqtt"; import { DISPLAY } from "./de/sensebox-display"; +import { MOTORS } from "./de/sensebox-motors"; import { LED } from "./de/sensebox-led"; import { LORA } from "./de/sensebox-lora"; import { OSEM } from "./de/sensebox-osem"; @@ -34,6 +35,7 @@ export const De = { ...MATH, ...MQTT, ...DISPLAY, + ...MOTORS, ...LED, ...LORA, ...OSEM, diff --git a/src/components/Blockly/msg/de/sensebox-motors.js b/src/components/Blockly/msg/de/sensebox-motors.js new file mode 100644 index 0000000..686d338 --- /dev/null +++ b/src/components/Blockly/msg/de/sensebox-motors.js @@ -0,0 +1,48 @@ +export const MOTORS = { + + /** + * Motors + */ + + sensebox_motors_beginServoMotor: "Initialisiere Servomotor", + sensebox_motors_beginServoMotor_pin: "Pin:", + sensebox_motors_beginServoMotor_tooltip: "Verbinde einen digitalen Pin mit dem orangen Kabel des Servomotrors. Verbinde zusätzlich GND mit GND (schwarzes und braunes Kabel) und 5V mit 5V (rotes Kabel).", + sensebox_motors_beginServoMotor_helpurl: "https://de.wikipedia.org/wiki/Servomotor", + + sensebox_motors_moveServoMotor: "Bewege Servomotor", + sensebox_motors_moveServoMotor_pin: "Pin:", + sensebox_motors_moveServoMotor_degrees: "Winkel in Grad:", + sensebox_motors_moveServoMotor_tooltip: "Der Servomotor kann zwischen 0 und 180 Grad bewegt werden.", + sensebox_motors_moveServoMotor_helpurl: "https://de.wikipedia.org/wiki/Servomotor", + + sensebox_motors_I2CMotorBoard_begin: "Initialize I2C Motor Board", + sensebox_motors_I2CMotorBoard_begin_tooltip: "Connect the I2C Moztor Board with the two DC Motors to one of the five I2C-Ports. Use this Block inside the setup()-function.", + 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:", + sensebox_motors_I2CMotorBoard_moveDCMotor_tooltip: "You can set the Speed between -100 and 100.", + 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", + + sensebox_motors_beginStepperMotor: "Initialize Stepper Motor (28BYJ-48)", + sensebox_motors_beginStepperMotor_rpm: "Rotations per Minute:", + sensebox_motors_beginStepperMotor_pins: "Input Pins (IN1-IN4):", + sensebox_motors_beginStepperMotor_tooltip: "Connect four of the the digital pins in the right order to the inputs IN1-IN4 on the stepper motor board. Connect a GND pin (black wire) to the minus pin and a 5V pin (red wire) to the plus pin on the board. Also connect the stepper motor to this Board. Use this Block inside the setup()-function.", + sensebox_motors_beginStepperMotor_helpurl: "TODO", + + sensebox_motors_moveStepperMotor: "Move Stepper Motor (28BYJ-48)", + sensebox_motors_moveStepperMotor_step: "Steps:", + sensebox_motors_moveStepperMotor_tooltip: "Move stepper motor. 2048 steps equal a full rotation.", + sensebox_motors_moveStepperMotor_helpurl: "TODO", +}; + diff --git a/src/components/Blockly/msg/en/sensebox-motors.js b/src/components/Blockly/msg/en/sensebox-motors.js index 88a3633..00f7462 100644 --- a/src/components/Blockly/msg/en/sensebox-motors.js +++ b/src/components/Blockly/msg/en/sensebox-motors.js @@ -4,39 +4,27 @@ export const MOTORS = { * Motors */ - sensebox_motors_beginStepperMotor: "Initialize Stepper Motor (28BYJ-48)", - 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 (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_beginServoMotor_tooltip: "Connect one of the the digital pins to the orange wire of the Servo Motor. Also Connect GND to GND (black and brown wire) and 5V to 5V (red wire).", + sensebox_motors_beginServoMotor_helpurl: "https://en.wikipedia.org/wiki/Servomotor", 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_moveServoMotor_tooltip: "The Servo Motor can be moved to a spezific angle between 0 and 180 degrees.", + sensebox_motors_moveServoMotor_helpurl: "https://en.wikipedia.org/wiki/Servomotor", sensebox_motors_I2CMotorBoard_begin: "Initialize I2C Motor Board", - sensebox_motors_I2CMotorBoard_begin_tooltip: "TODO", + sensebox_motors_I2CMotorBoard_begin_tooltip: "Connect the I2C Moztor Board with the two DC Motors to one of the five I2C-Ports. Use this Block inside the setup()-function.", 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_speed: "Speed:", + sensebox_motors_I2CMotorBoard_moveDCMotor_tooltip: "You can set the Speed between -100 and 100.", sensebox_motors_I2CMotorBoard_moveDCMotor_helpurl: "TODO", sensebox_motors_I2CMotorBoard_stopDCMotor: "Stop ", @@ -45,5 +33,16 @@ export const MOTORS = { sensebox_motors_I2CMotorBoard_stopDCMotor_motor: "DC Motor at I2C Motor Board", sensebox_motors_I2CMotorBoard_stopDCMotor_tooltip: "TODO", sensebox_motors_I2CMotorBoard_stopDCMotor_helpurl: "TODO", + + sensebox_motors_beginStepperMotor: "Initialize Stepper Motor (28BYJ-48)", + sensebox_motors_beginStepperMotor_rpm: "Rotations per Minute:", + sensebox_motors_beginStepperMotor_pins: "Input Pins (IN1-IN4):", + sensebox_motors_beginStepperMotor_tooltip: "Connect four of the the digital pins in the right order to the inputs IN1-IN4 on the stepper motor board. Connect a GND pin (black wire) to the minus pin and a 5V pin (red wire) to the plus pin on the board. Also connect the stepper motor to this Board. Use this Block inside the setup()-function.", + sensebox_motors_beginStepperMotor_helpurl: "TODO", + + sensebox_motors_moveStepperMotor: "Move Stepper Motor (28BYJ-48)", + sensebox_motors_moveStepperMotor_step: "Steps:", + sensebox_motors_moveStepperMotor_tooltip: "Move stepper motor. 2048 steps equal a full rotation.", + sensebox_motors_moveStepperMotor_helpurl: "TODO", }; diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index 575b9af..c83d112 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -299,13 +299,31 @@ class Toolbox extends React.Component { - - - - - + + + + 90 + + + + {/* + + + + 100 + + + + + + + + 2048 + + + */} {/*