Skip to content

Commit 8ca5bf3

Browse files
Kingkit-ericKe, Mingze
authored andcommitted
Add speed control for toyCar
1 parent 7e6b986 commit 8ca5bf3

8 files changed

Lines changed: 176 additions & 132 deletions

File tree

blocks/msg/en.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,10 @@ Blockly.Msg.WEBDUINO_TESTCAR_BACKRIGHT = "back right";
596596
Blockly.Msg.WEBDUINO_TESTCAR_TURNRIGHT = "turn right";
597597
Blockly.Msg.WEBDUINO_TESTCAR_TURNLEFT = "turn left";
598598
Blockly.Msg.WEBDUINO_TESTCAR_STOP = "stop";
599+
Blockly.Msg.WEBDUINO_TESTCAR_SPEED = "speed";
600+
Blockly.Msg.WEBDUINO_TESTCAR_RIGHT = "right wheel";
601+
Blockly.Msg.WEBDUINO_TESTCAR_LEFT = "left wheel";
602+
Blockly.Msg.WEBDUINO_TESTCAR_PERCENT = "%";
599603

600604
Blockly.Msg.WEBDUINO_MATRIX = "LED Matrix (Max7219) ";
601605
Blockly.Msg.WEBDUINO_MATRIX_DIN = "din:";

blocks/msg/zh-hans.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,10 @@ Blockly.Msg.WEBDUINO_TESTCAR_BACKRIGHT = "右后";
530530
Blockly.Msg.WEBDUINO_TESTCAR_TURNRIGHT = "原地右转";
531531
Blockly.Msg.WEBDUINO_TESTCAR_TURNLEFT = "原地左转";
532532
Blockly.Msg.WEBDUINO_TESTCAR_STOP = "停止";
533+
Blockly.Msg.WEBDUINO_TESTCAR_SPEED = "速度";
534+
Blockly.Msg.WEBDUINO_TESTCAR_RIGHT = "右轮";
535+
Blockly.Msg.WEBDUINO_TESTCAR_LEFT = "左轮";
536+
Blockly.Msg.WEBDUINO_TESTCAR_PERCENT = "%";
533537

534538
// Fish
535539

blocks/msg/zh-hant.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,10 @@ Blockly.Msg.WEBDUINO_TESTCAR_BACKRIGHT = "右後";
495495
Blockly.Msg.WEBDUINO_TESTCAR_TURNRIGHT = "原地右轉";
496496
Blockly.Msg.WEBDUINO_TESTCAR_TURNLEFT = "原地左轉";
497497
Blockly.Msg.WEBDUINO_TESTCAR_STOP = "停止";
498+
Blockly.Msg.WEBDUINO_TESTCAR_SPEED = "速度";
499+
Blockly.Msg.WEBDUINO_TESTCAR_RIGHT = "右輪";
500+
Blockly.Msg.WEBDUINO_TESTCAR_LEFT = "左輪";
501+
Blockly.Msg.WEBDUINO_TESTCAR_PERCENT = "%";
498502

499503
// Fish
500504

blocks/webduino.js

Lines changed: 61 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -962,7 +962,7 @@ Blockly.Blocks['board_server'] = {
962962

963963
Blockly.Blocks['board'] = {
964964
board_type: Blockly.Msg.WEBDUINO_MARK_OR_FLY,
965-
init: function() {
965+
init: function () {
966966
function dropdown_options() {
967967
var board_type = Blockly.Blocks['board']['board_type'];
968968
var options_full = [
@@ -985,48 +985,48 @@ Blockly.Blocks['board'] = {
985985
}
986986

987987
this.appendValueInput('device_')
988-
.setCheck('String')
989-
.appendField(Blockly.Msg.WEBDUINO_BOARD, '開發板')
990-
.appendField(new Blockly.FieldDropdown([
991-
[Blockly.Msg.WEBDUINO_MARK_OR_FLY, '1'],
992-
[Blockly.Msg.WEBDUINO_SMART, '2']
993-
]), 'board_')
994-
.appendField(Blockly.Msg.WEBDUINO_USE, '透過')
995-
.appendField(new Blockly.FieldDropdown(dropdown_options), 'type_')
996-
.appendField(Blockly.Msg.WEBDUINO_CONNECT_TO, '連線至');
997-
this.appendDummyInput()
998-
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, ' 類比取樣')
999-
.appendField(new Blockly.FieldDropdown([
1000-
['20 ms', '20'],
1001-
['50 ms', '50'],
1002-
['75 ms', '75'],
1003-
['100 ms', '100'],
1004-
['250 ms', '250'],
1005-
['500 ms', '500'],
1006-
['1 sec', '1000']
1007-
]), 'rate_')
1008-
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN, '串聯')
1009-
.appendField(new Blockly.FieldCheckbox('FALSE'), 'check_')
1010-
.appendField(Blockly.Msg.WEBDUINO_BOARD_MULTI, '協同控制')
1011-
.appendField(new Blockly.FieldCheckbox('FALSE'), 'multi_');
988+
.setCheck('String')
989+
.appendField(Blockly.Msg.WEBDUINO_BOARD, '開發板')
990+
.appendField(new Blockly.FieldDropdown([
991+
[Blockly.Msg.WEBDUINO_MARK_OR_FLY, '1'],
992+
[Blockly.Msg.WEBDUINO_SMART, '2']
993+
]), 'board_')
994+
.appendField(Blockly.Msg.WEBDUINO_USE, '透過')
995+
.appendField(new Blockly.FieldDropdown(dropdown_options), 'type_')
996+
.appendField(Blockly.Msg.WEBDUINO_CONNECT_TO, '連線至');
997+
this.appendDummyInput()
998+
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, ' 類比取樣')
999+
.appendField(new Blockly.FieldDropdown([
1000+
['20 ms', '20'],
1001+
['50 ms', '50'],
1002+
['75 ms', '75'],
1003+
['100 ms', '100'],
1004+
['250 ms', '250'],
1005+
['500 ms', '500'],
1006+
['1 sec', '1000']
1007+
]), 'rate_')
1008+
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN, '串聯')
1009+
.appendField(new Blockly.FieldCheckbox('FALSE'), 'check_')
1010+
.appendField(Blockly.Msg.WEBDUINO_BOARD_MULTI, '協同控制')
1011+
.appendField(new Blockly.FieldCheckbox('FALSE'), 'multi_');
10121012
this.appendStatementInput('callbacks_');
10131013
this.setTooltip('');
10141014
this.setColour(290);
10151015
this.setHelpUrl('https://webduino.io');
10161016
},
1017-
onchange: function(ev) {
1018-
switch(ev.name) {
1019-
case 'board_':
1017+
onchange: function (ev) {
1018+
switch (ev.name) {
1019+
case 'board_':
10201020
var newValue = ev.newValue;
1021-
if (newValue == '1') {
1022-
Blockly.Blocks['board']['board_type'] = Blockly.Msg.WEBDUINO_MARK_OR_FLY;
1023-
this.getField('rate_').setValue('250');
1024-
} else if (newValue === '2') {
1025-
Blockly.Blocks['board']['board_type'] = Blockly.Msg.WEBDUINO_SMART;
1026-
this.getField('rate_').setValue('50');
1027-
}
1028-
this.getField('type_').setValue('1')
1029-
break;
1021+
if (newValue == '1') {
1022+
Blockly.Blocks['board']['board_type'] = Blockly.Msg.WEBDUINO_MARK_OR_FLY;
1023+
this.getField('rate_').setValue('250');
1024+
} else if (newValue === '2') {
1025+
Blockly.Blocks['board']['board_type'] = Blockly.Msg.WEBDUINO_SMART;
1026+
this.getField('rate_').setValue('50');
1027+
}
1028+
this.getField('type_').setValue('1')
1029+
break;
10301030
}
10311031
}
10321032
};
@@ -2472,6 +2472,30 @@ Blockly.Blocks['car_test_move'] = {
24722472
}
24732473
};
24742474

2475+
Blockly.Blocks['car_speed'] = {
2476+
init: function () {
2477+
this.appendDummyInput()
2478+
.appendField(Blockly.Msg.WEBDUINO_TESTCAR, "自走車")
2479+
.appendField(new Blockly.FieldVariable("car"), "var_")
2480+
.appendField(new Blockly.FieldDropdown([
2481+
[Blockly.Msg.WEBDUINO_TESTCAR_RIGHT, "setRightSpeed"],
2482+
[Blockly.Msg.WEBDUINO_TESTCAR_LEFT, "setLeftSpeed"]
2483+
]), "tire_")
2484+
.appendField(Blockly.Msg.WEBDUINO_TESTCAR_SPEED, " 速度");
2485+
this.appendValueInput("speed_")
2486+
.setCheck("Number");
2487+
this.appendDummyInput()
2488+
.appendField(Blockly.Msg.WEBDUINO_TESTCAR_PERCENT,"%");
2489+
this.setColour(200);
2490+
this.setInputsInline(true);
2491+
this.setPreviousStatement(true);
2492+
this.setNextStatement(true);
2493+
this.setTooltip('');
2494+
this.setHelpUrl('https://webduino.io');
2495+
2496+
}
2497+
};
2498+
24752499
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#e4r57n
24762500
Blockly.Blocks['temp_data_set'] = {
24772501
init: function () {

generators/webduino.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,6 +1632,14 @@ Blockly.JavaScript['car_test_move'] = function (block) {
16321632
return code;
16331633
};
16341634

1635+
Blockly.JavaScript['car_speed'] = function(block) {
1636+
var variable_var_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('var_'), Blockly.Variables.NAME_TYPE);
1637+
var dropdown_speed_ = Blockly.JavaScript.valueToCode(block, 'speed_', Blockly.JavaScript.ORDER_ATOMIC);
1638+
var dropdown_tire_ = block.getFieldValue('tire_');
1639+
var code = variable_var_ + '.' + dropdown_tire_ + '(' + dropdown_speed_ + ');\n';
1640+
return code;
1641+
}
1642+
16351643

16361644
Blockly.JavaScript['temp_data_set'] = function (block) {
16371645
var dropdown_type_ = block.getFieldValue('type_');

msg/zh-hans.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ var MSG = {
6363
linkToBin: "程式编辑",
6464
catDatabase: "资料库",
6565
catFirebase: "Firebase",
66-
catCarTest: "自走车 (2)",
67-
catCar: "自走车 (1)",
66+
catCarTest: "自走车",
6867
catFish: "飞天鱼",
6968
catBasic: "基本积木",
7069
catWebduino: "Webduino 积木",

toolbox/index.xml

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@
209209
</value>
210210
</block>
211211
</category>
212-
<sep></sep>
212+
<sep></sep>
213213
</category>
214214
<category id="catPlus">
215215
<category id="catConsole">
@@ -294,10 +294,10 @@
294294
</block>
295295
</category>
296296
<category id="catKeyCode">
297-
<block type="document_keyboard"></block>
298-
<block type="document_keycode"></block>
299-
<block type="document_keyboard_konami"></block>
300-
<block type="document_keyboard_stop"></block>
297+
<block type="document_keyboard"></block>
298+
<block type="document_keycode"></block>
299+
<block type="document_keyboard_konami"></block>
300+
<block type="document_keyboard_stop"></block>
301301
</category>
302302
<category id="catSpeech">
303303
<block type="sound_recognition"></block>
@@ -330,12 +330,12 @@
330330
<block type="speak_setting_sample"></block>
331331
</category>
332332
<category id="catMobile">
333-
<block type="mobile_deviceorientation_event"></block>
334-
<block type="mobile_deviceorientation_event_val"></block>
335-
<block type="mobile_devicemotion_event_val"></block>
336-
<block type="mobile_deviceorientation_event_remove"></block>
333+
<block type="mobile_deviceorientation_event"></block>
334+
<block type="mobile_deviceorientation_event_val"></block>
335+
<block type="mobile_devicemotion_event_val"></block>
336+
<block type="mobile_deviceorientation_event_remove"></block>
337337
</category>
338-
<sep></sep>
338+
<sep></sep>
339339
</category>
340340
<sep></sep>
341341
<category id="catBoard">
@@ -661,8 +661,7 @@
661661
<block type="joystick_val"></block>
662662
<block type="joystick_off"></block>
663663
</category>
664-
665-
<sep></sep>
664+
<sep></sep>
666665
</category>
667666
<category id="catMenu2">
668667
<category id="catUltraSonic" tags="fly,mark1">
@@ -782,15 +781,15 @@
782781
<block type="rfid_uid"></block>
783782
<block type="rfid_if">
784783
<value name="uid_">
785-
<block type="text">
786-
<field name="TEXT">...</field>
787-
</block>
784+
<block type="text">
785+
<field name="TEXT">...</field>
786+
</block>
788787
</value>
789788
</block>
790789
<block type="rfid_leave"></block>
791790
<block type="rfid_stopread"></block>
792791
</category>
793-
<sep></sep>
792+
<sep></sep>
794793
</category>
795794
<category id="catMenu3">
796795
<category id="catCarTest">
@@ -806,6 +805,13 @@
806805
<field name="lb_">9</field>
807806
</block>
808807
<block type="car_test_move"></block>
808+
<block type="car_speed">
809+
<value name="speed_">
810+
<block type="math_number">
811+
<field name="NUM">100</field>
812+
</block>
813+
</value>
814+
</block>
809815
</category>
810816
<category id="catFish" tags="esp">
811817
<block type="variables_set">
@@ -834,7 +840,7 @@
834840
<field name="speed_">2</field>
835841
</block>
836842
</category>
837-
<sep></sep>
843+
<sep></sep>
838844
</category>
839845
<category id="catDatabase">
840846
<category id="catFirebase">
@@ -888,11 +894,11 @@
888894
</value>
889895
</block>
890896
<block type="demo_text_color">
891-
<value name="color_">
892-
<block type="colour_picker">
893-
<field name="COLOUR">#ff0000</field>
894-
</block>
895-
</value>
897+
<value name="color_">
898+
<block type="colour_picker">
899+
<field name="COLOUR">#ff0000</field>
900+
</block>
901+
</value>
896902
</block>
897903
</category>
898904
<category id="catDemoLight" demo="demo-area-02">
@@ -947,11 +953,11 @@
947953
<block type="demo_area_input"></block>
948954
<block type="demo_area_input_color"></block>
949955
<block type="demo_area_color">
950-
<value name="color_">
951-
<block type="colour_picker">
952-
<field name="COLOUR">#ff0000</field>
953-
</block>
954-
</value>
956+
<value name="color_">
957+
<block type="colour_picker">
958+
<field name="COLOUR">#ff0000</field>
959+
</block>
960+
</value>
955961
</block>
956962
</category>
957963
<category id="catDemoButton" demo="demo-area-05">
@@ -993,9 +999,9 @@
993999
</block>
9941000
<block type="demo_youtube_id">
9951001
<value name="id_">
996-
<block type="text">
997-
<field name="TEXT">...</field>
998-
</block>
1002+
<block type="text">
1003+
<field name="TEXT">...</field>
1004+
</block>
9991005
</value>
10001006
</block>
10011007
<block type="demo_youtube_control"></block>
@@ -1042,11 +1048,11 @@
10421048
<block type="demo_controller"></block>
10431049
<block type="demo_controller_show"></block>
10441050
<block type="demo_controller_showcolor">
1045-
<value name="color_">
1046-
<block type="colour_picker">
1047-
<field name="COLOUR">#ff0000</field>
1048-
</block>
1049-
</value>
1051+
<value name="color_">
1052+
<block type="colour_picker">
1053+
<field name="COLOUR">#ff0000</field>
1054+
</block>
1055+
</value>
10501056
</block>
10511057
<block type="demo_controller_range">
10521058
<value name="min_">
@@ -1072,4 +1078,4 @@
10721078
</block>
10731079
<block type="demo_controller_range_value"></block>
10741080
</category>
1075-
</xml>
1081+
</xml>

0 commit comments

Comments
 (0)