Merge pull request #9 from sensebox/add-button-block

add block for the button
This commit is contained in:
Mario Pesch 2020-10-02 12:33:37 +00:00 committed by GitHub
commit 182b5ada77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 156 additions and 110 deletions

View File

@ -55,11 +55,11 @@ class BlocklyWindow extends Component {
style={this.props.svg ? { height: 0 } : this.props.blocklyCSS} style={this.props.svg ? { height: 0 } : this.props.blocklyCSS}
readOnly={this.props.readOnly !== undefined ? this.props.readOnly : false} readOnly={this.props.readOnly !== undefined ? this.props.readOnly : false}
trashcan={this.props.trashcan !== undefined ? this.props.trashcan : true} trashcan={this.props.trashcan !== undefined ? this.props.trashcan : true}
renderer='zelos' renderer='geras'
zoom={{ // https://developers.google.com/blockly/guides/configure/web/zoom zoom={{ // https://developers.google.com/blockly/guides/configure/web/zoom
controls: this.props.zoomControls !== undefined ? this.props.zoomControls : true, controls: this.props.zoomControls !== undefined ? this.props.zoomControls : true,
wheel: false, wheel: false,
startScale: 0.8, startScale: 1,
maxScale: 3, maxScale: 3,
minScale: 0.3, minScale: 0.3,
scaleSpeed: 1.2 scaleSpeed: 1.2

View File

@ -280,5 +280,24 @@ Blockly.Blocks['sensebox_sensor_sound'] = {
}; };
/**
* Button
*
*
*/
Blockly.Blocks['sensebox_button'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.senseBox_button)
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_button_isPressed, "isPressed"], [Blockly.Msg.senseBox_button_wasPressed, "wasPressed"], [Blockly.Msg.senseBox_button_switch, "Switch"]]), "FUNCTION")
.appendField("Pin:")
.appendField(new Blockly.FieldDropdown(selectedBoard().digitalPinsButton), "PIN");
this.setOutput(true, Types.BOOLEAN.typeName);
this.setColour(getColour().sensebox);
this.setTooltip(Blockly.Msg.senseBox_button_tip);
this.setHelpUrl('https://sensebox.de/books');
}
};

View File

@ -226,3 +226,29 @@ Blockly.Arduino.sensebox_sensor_sound = function () {
var code = 'microphone.getValue()'; var code = 'microphone.getValue()';
return [code, Blockly.Arduino.ORDER_ATOMIC]; return [code, Blockly.Arduino.ORDER_ATOMIC];
}; };
/**
* Button
*
*/
Blockly.Arduino.sensebox_button = function () {
var dropdown_pin = this.getFieldValue('PIN');
var dropown_function = this.getFieldValue('FUNCTION');
Blockly.Arduino.libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"';
Blockly.Arduino.definitions_['define_button' + dropdown_pin + ''] = 'Button button_' + dropdown_pin + '(' + dropdown_pin + ');';
Blockly.Arduino.setupCode_['setup_button' + dropdown_pin + ''] = 'button_' + dropdown_pin + '.begin();';
var code = '';
if (dropown_function === 'isPressed') {
code = 'button_' + dropdown_pin + '.isPressed()';
}
else if (dropown_function === 'Switch') {
code = 'button_' + dropdown_pin + '.getSwitch()';
}
else if (dropown_function === 'wasPressed') {
code = 'button_' + dropdown_pin + '.wasPressed()';
}
return [code, Blockly.Arduino.ORDER_ATOMIC];
};

View File

@ -47,6 +47,7 @@ class Toolbox extends React.Component {
<Block type="sensebox_sensor_bme680_bsec" /> <Block type="sensebox_sensor_bme680_bsec" />
<Block type="sensebox_sensor_ultrasonic_ranger" /> <Block type="sensebox_sensor_ultrasonic_ranger" />
<Block type="sensebox_sensor_sound" /> <Block type="sensebox_sensor_sound" />
<Block type="sensebox_button" />
</Category > </Category >
<Category name="WIFI" colour={getColour().sensebox}> <Category name="WIFI" colour={getColour().sensebox}>
<Block type="sensebox_wifi" /> <Block type="sensebox_wifi" />