Skip to content

Commit 920b2d2

Browse files
committed
add Joystick
1 parent fde186d commit 920b2d2

6 files changed

Lines changed: 164 additions & 11 deletions

File tree

blocks/webduino.js

Lines changed: 101 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1941,12 +1941,18 @@ Blockly.Blocks['adxl345_on'] = {
19411941
};
19421942

19431943
Blockly.Blocks['adxl345_val'] = {
1944-
init: function() {
1944+
init: function () {
19451945
this.appendDummyInput()
1946-
.appendField(new Blockly.FieldVariable("adxl"), "name_")
1947-
.appendField("的")
1948-
.appendField(new Blockly.FieldDropdown([["x", "_x"], ["y", "_y"], ["z", "_z"], ["roll", "_r"], ["pitch", "_p"]]), "val_")
1949-
.appendField("數值");
1946+
.appendField(new Blockly.FieldVariable("adxl"), "name_")
1947+
.appendField("的")
1948+
.appendField(new Blockly.FieldDropdown([
1949+
["x", "_x"],
1950+
["y", "_y"],
1951+
["z", "_z"],
1952+
["roll", "_r"],
1953+
["pitch", "_p"]
1954+
]), "val_")
1955+
.appendField("數值");
19501956
this.setOutput(true);
19511957
this.setTooltip('');
19521958
this.setColour(65);
@@ -1966,3 +1972,93 @@ Blockly.Blocks['adxl345_off'] = {
19661972
this.setHelpUrl('http://www.example.com/');
19671973
}
19681974
};
1975+
1976+
1977+
Blockly.Blocks['joystick_new'] = {
1978+
init: function () {
1979+
this.appendDummyInput()
1980+
.appendField("搖桿,X")
1981+
.appendField(new Blockly.FieldDropdown([
1982+
["A0", "0"],
1983+
["A1", "1"],
1984+
["A2", "2"],
1985+
["A3", "3"],
1986+
["A4", "4"],
1987+
["A5", "5"]
1988+
]), "vrx_")
1989+
.appendField(" Y")
1990+
.appendField(new Blockly.FieldDropdown([
1991+
["A0", "0"],
1992+
["A1", "1"],
1993+
["A2", "2"],
1994+
["A3", "3"],
1995+
["A4", "4"],
1996+
["A5", "5"]
1997+
]), "vry_")
1998+
.appendField(" SW")
1999+
.appendField(new Blockly.FieldDropdown([
2000+
["2", "2"],
2001+
["3", "3"],
2002+
["4", "4"],
2003+
["5", "5"],
2004+
["6", "6"],
2005+
["7", "7"],
2006+
["8", "8"],
2007+
["9", "9"],
2008+
["10", "10"],
2009+
["11", "11"],
2010+
["12", "12"],
2011+
["13", "13"]
2012+
]), "sw_");
2013+
this.setOutput(true);
2014+
this.setColour(230);
2015+
this.setTooltip('');
2016+
this.setHelpUrl('http://www.example.com/');
2017+
}
2018+
};
2019+
2020+
Blockly.Blocks['joystick_on'] = {
2021+
init: function () {
2022+
this.appendDummyInput()
2023+
.appendField(new Blockly.FieldVariable("joystick"), "name_")
2024+
.appendField("開始偵測");
2025+
this.appendStatementInput("on_")
2026+
.appendField("執行:");
2027+
this.setPreviousStatement(true);
2028+
this.setNextStatement(true);
2029+
this.setColour(65);
2030+
this.setTooltip('');
2031+
this.setHelpUrl('http://www.example.com/');
2032+
}
2033+
};
2034+
2035+
Blockly.Blocks['joystick_val'] = {
2036+
init: function () {
2037+
this.appendDummyInput()
2038+
.appendField(new Blockly.FieldVariable("joystick"), "name_")
2039+
.appendField("的")
2040+
.appendField(new Blockly.FieldDropdown([
2041+
["X", "_x"],
2042+
["Y", "_y"],
2043+
["SW", "_z"]
2044+
]), "val_")
2045+
.appendField("數值");
2046+
this.setOutput(true);
2047+
this.setTooltip('');
2048+
this.setColour(65);
2049+
this.setHelpUrl('http://www.example.com/');
2050+
}
2051+
};
2052+
2053+
Blockly.Blocks['joystick_off'] = {
2054+
init: function () {
2055+
this.appendDummyInput()
2056+
.appendField(new Blockly.FieldVariable("joystick"), "name_")
2057+
.appendField("停止偵測");
2058+
this.setPreviousStatement(true);
2059+
this.setNextStatement(true);
2060+
this.setColour(65);
2061+
this.setTooltip('');
2062+
this.setHelpUrl('http://www.example.com/');
2063+
}
2064+
};

generators/webduino.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,4 +1161,40 @@ Blockly.JavaScript['adxl345_off'] = function(block) {
11611161
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
11621162
var code = variable_name_+'.off();\n';
11631163
return code;
1164+
};
1165+
1166+
1167+
1168+
Blockly.JavaScript['joystick_new'] = function (block) {
1169+
var dropdown_vrx_ = block.getFieldValue('vrx_');
1170+
var dropdown_vry_ = block.getFieldValue('vry_');
1171+
var dropdown_sw_ = block.getFieldValue('sw_');
1172+
var code = 'getJoystick(board, ' + dropdown_vrx_ + ', ' + dropdown_vry_ + ', ' + dropdown_sw_ + ')';
1173+
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
1174+
};
1175+
1176+
Blockly.JavaScript['joystick_on'] = function(block) {
1177+
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
1178+
var statements_on_ = Blockly.JavaScript.statementToCode(block, 'on_');
1179+
var code = variable_name_+'.on("message",_read_);\n'+
1180+
'function _read_(_x, _y, _z){\n'+
1181+
' '+variable_name_+'._x = _x;\n'+
1182+
' '+variable_name_+'._y = _y;\n'+
1183+
' '+variable_name_+'._z = _z;\n'+
1184+
statements_on_+
1185+
'}\n';
1186+
return code;
1187+
};
1188+
1189+
Blockly.JavaScript['joystick_val'] = function(block) {
1190+
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
1191+
var dropdown_val_ = block.getFieldValue('val_');
1192+
var code = variable_name_+'.'+dropdown_val_;
1193+
return [code, Blockly.JavaScript.ORDER_ATOMIC];
1194+
};
1195+
1196+
Blockly.JavaScript['joystick_off'] = function(block) {
1197+
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
1198+
var code = variable_name_+'.off("message",_read_);\n';
1199+
return code;
11641200
};

msg/en.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,6 @@ var MSG = {
5858
catPhotocell: "Photocell",
5959
catIRRecv: "IR Recv",
6060
catIRLed: "IR Launch",
61-
catADXL345: "ADXL345"
61+
catADXL345: "ADXL345",
62+
catJoystick: "Joystick"
6263
};

msg/zh-hant.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,6 @@ var MSG = {
6060
catPhotocell: "光敏電阻",
6161
catIRRecv: "紅外線接收",
6262
catIRLed: "紅外線發射",
63-
catADXL345: "三軸加速度計"
63+
catADXL345: "三軸加速度計",
64+
catJoystick: "搖桿"
6465
};

views/index.handlebars

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,21 @@
537537
</block>
538538
<block type="shock_event"></block>
539539
</category>
540+
<category id="catJoystick">
541+
<block type="variables_set">
542+
<field name="VAR">joystick</field>
543+
<value name="VALUE">
544+
<block type="joystick_new">
545+
<field name="vrx_">4</field>
546+
<field name="vry_">5</field>
547+
<field name="sw_">11</field>
548+
</block>
549+
</value>
550+
</block>
551+
<block type="joystick_on"></block>
552+
<block type="joystick_val"></block>
553+
<block type="joystick_off"></block>
554+
</category>
540555
<sep></sep>
541556
</category>
542557
<category id="catMenu2">
@@ -605,7 +620,7 @@
605620
<field name="VAR">photocell</field>
606621
<value name="VALUE">
607622
<block type="photocell_new">
608-
<field name="pin_">A5</field>
623+
<field name="pin_">5</field>
609624
</block>
610625
</value>
611626
</block>
@@ -618,8 +633,8 @@
618633
<field name="VAR">adxl</field>
619634
<value name="VALUE">
620635
<block type="adxl345_new">
621-
<field name="sda_">A4</field>
622-
<field name="scl_">A5</field>
636+
<field name="sda_">4</field>
637+
<field name="scl_">5</field>
623638
</block>
624639
</value>
625640
</block>

webduino-blockly.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ function getADXL345(board) {
8181
return new webduino.module.ADXL345(board);
8282
}
8383

84+
function getJoystick(board, vrx, vry, sw) {
85+
return new webduino.module.Joystick(board, board.getAnalogPin(vrx), board.getAnalogPin(vry), board.getDigitalPin(sw));
86+
}
87+
8488
function getCar(board, F, B, L, R) {
8589
return new Car(board, F, B, L, R);
8690
}
@@ -219,5 +223,5 @@ scope.getPhotocell = getPhotocell;
219223
scope.getIRRecv = getIRRecv;
220224
scope.getIRLed = getIRLed;
221225
scope.getADXL345 = getADXL345;
222-
226+
scope.getJoystick = getJoystick;
223227
}));

0 commit comments

Comments
 (0)