123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /**
- * @license Licensed under the Apache License, Version 2.0 (the "License"):
- * http://www.apache.org/licenses/LICENSE-2.0
- */
- /**
- * @fileoverview Blocks for Arduino Stepper library.
- * The Arduino Servo functions syntax can be found in the following URL:
- * http://arduino.cc/en/Reference/Stepper
- * Note that this block uses the Blockly.FieldInstance instead of
- * Blockly.FieldDropdown which generates a unique instance per setup block
- * in the workspace.
- */
- 'use strict';
- goog.provide('Blockly.Blocks.stepper');
- goog.require('Blockly.Blocks');
- goog.require('Blockly.Types');
- /** Common HSV hue for all blocks in this category. */
- Blockly.Blocks.stepper.HUE = 80;
- Blockly.Blocks['stepper_config'] = {
- /**
- * Block for for the stepper generator configuration including creating
- * an object instance and setting up the speed. Info in the setHelpUrl link.
- * @this Blockly.Block
- */
- init: function() {
- this.setHelpUrl('http://arduino.cc/en/Reference/StepperConstructor');
- this.setColour(Blockly.Blocks.stepper.HUE);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_STEPPER_SETUP)
- .appendField(
- new Blockly.FieldInstance('Stepper',
- Blockly.Msg.ARD_STEPPER_DEFAULT_NAME,
- true, true, false),
- 'STEPPER_NAME')
- .appendField(Blockly.Msg.ARD_STEPPER_MOTOR);
- this.appendDummyInput()
- .setAlign(Blockly.ALIGN_RIGHT)
- .appendField(Blockly.Msg.ARD_STEPPER_PIN1)
- .appendField(new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.digitalPins), 'STEPPER_PIN1')
- .appendField(Blockly.Msg.ARD_STEPPER_PIN2)
- .appendField(new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.digitalPins), 'STEPPER_PIN2');
- this.appendValueInput('STEPPER_STEPS')
- .setCheck(Blockly.Types.NUMBER.checkList)
- .setAlign(Blockly.ALIGN_RIGHT)
- .appendField(Blockly.Msg.ARD_STEPPER_REVOLVS);
- this.appendValueInput('STEPPER_SPEED')
- .setCheck(Blockly.Types.NUMBER.checkList)
- .setAlign(Blockly.ALIGN_RIGHT)
- .appendField(Blockly.Msg.ARD_STEPPER_SPEED);
- this.setTooltip(Blockly.Msg.ARD_STEPPER_SETUP_TIP);
- },
- /**
- * Updates the content of the the pin related fields.
- * @this Blockly.Block
- */
- updateFields: function() {
- Blockly.Boards.refreshBlockFieldDropdown(
- this, 'STEPPER_PIN1', 'digitalPins');
- Blockly.Boards.refreshBlockFieldDropdown(
- this, 'STEPPER_PIN2', 'digitalPins');
- }
- };
- Blockly.Blocks['stepper_step'] = {
- /**
- * Block for for the stepper 'step()' function.
- * @this Blockly.Block
- */
- init: function() {
- this.setHelpUrl('http://arduino.cc/en/Reference/StepperStep');
- this.setColour(Blockly.Blocks.stepper.HUE);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_STEPPER_STEP)
- .appendField(
- new Blockly.FieldInstance('Stepper',
- Blockly.Msg.ARD_STEPPER_DEFAULT_NAME,
- false, true, false),
- 'STEPPER_NAME');
- this.appendValueInput('STEPPER_STEPS')
- .setCheck(Blockly.Types.NUMBER.checkList);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_STEPPER_STEPS);
- this.setPreviousStatement(true);
- this.setNextStatement(true);
- this.setTooltip(Blockly.Msg.ARD_STEPPER_STEP_TIP);
- },
- /**
- * Called whenever anything on the workspace changes.
- * It checks/warns if the selected stepper instance has a config block.
- * @this Blockly.Block
- */
- onchange: function() {
- if (!this.workspace) return; // Block has been deleted.
- var instanceName = this.getFieldValue('STEPPER_NAME')
- if (Blockly.Instances.isInstancePresent(instanceName, 'Stepper', this)) {
- this.setWarningText(null);
- } else {
- // Set a warning to select a valid stepper config block
- this.setWarningText(
- Blockly.Msg.ARD_COMPONENT_WARN1.replace(
- '%1', Blockly.Msg.ARD_STEPPER_COMPONENT).replace(
- '%2', instanceName));
- }
- }
- };
|