Skip to content

Commit 38d4b5a

Browse files
committed
add servo control
1 parent 7687805 commit 38d4b5a

5 files changed

Lines changed: 47 additions & 1 deletion

File tree

blockly.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"types": ["wabot_new", "wabot_step","wabot_backyard","wabot_turn","wabot_action","wabot_tempo"],
2+
"types": ["wabot_new", "wabot_step", "wabot_backyard", "wabot_turn", "wabot_action", "wabot_tempo", "wabot_servo"],
33
"category": "catMenu3",
44
"scripts": [
55
"blockly/blocks.js",

blockly/blocks.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,29 @@ Blockly.Blocks['wabot_new'] = {
1010
};
1111

1212

13+
Blockly.Blocks['wabot_servo'] = {
14+
init: function() {
15+
this.appendValueInput("servo")
16+
.setCheck(null)
17+
.appendField(new Blockly.FieldVariable("wabot"), "wabot")
18+
.appendField("設定")
19+
.appendField(new Blockly.FieldDropdown([
20+
["右足", "0"],
21+
["左足", "1"],
22+
["右腿", "2"],
23+
["左腿", "3"],
24+
["左手", "4"],
25+
["右手", "5"]
26+
]), "n");
27+
this.setPreviousStatement(true, null);
28+
this.setNextStatement(true, null);
29+
this.setColour(65);
30+
this.setTooltip('');
31+
this.setHelpUrl('https://webduino.io');
32+
}
33+
};
34+
35+
1336
Blockly.Blocks['wabot_step'] = {
1437
init: function() {
1538
this.appendValueInput("step")

blockly/javascript.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ Blockly.JavaScript['wabot_walk'] = function(block) {
1111
return code;
1212
};
1313

14+
Blockly.JavaScript['wabot_servo'] = function(block) {
15+
var variable_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('wabot'), Blockly.Variables.NAME_TYPE);
16+
var dropdown_n = block.getFieldValue('n');
17+
var value_servo = Blockly.JavaScript.valueToCode(block, 'servo', Blockly.JavaScript.ORDER_ATOMIC);
18+
var code = variable_ + '.servo(' + dropdown_n + ',' + value_servo + ',function(){});\n';
19+
return code;
20+
};
21+
1422
Blockly.JavaScript['wabot_step'] = function(block) {
1523
var variable_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('wabot'), Blockly.Variables.NAME_TYPE);
1624
var dropdown_step = block.getFieldValue('step');

blockly/toolbox.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,11 @@
4141
</block>
4242
</value>
4343
</block>
44+
<block type="wabot_servo">
45+
<value name="servo">
46+
<block type="math_number">
47+
<field name="NUM">90</field>
48+
</block>
49+
</value>
50+
</block>
4451
</category>

wabot.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@
4343
}
4444
});
4545

46+
proto.servo = function(n, pos, callback) {
47+
this.callback['servo'] = callback;
48+
var a1 = (pos & 0xf0) >> 4,
49+
a2 = (pos & 0x0f);
50+
var cmd = [0xF0, 0x04, SENSOR_WABOT, 0x20, n, a1, a2, 0xF7];
51+
this._board.send(cmd);
52+
}
53+
4654
proto.standard = function(step, callback) {
4755
this.callback['standard'] = callback;
4856
var cmd = [0xF0, 0x04, SENSOR_WABOT, 0x01, 0, 0xF7];

0 commit comments

Comments
 (0)