diff --git a/boards/default_src/micropython/blocks/display_onboard.js b/boards/default_src/micropython/blocks/display_onboard.js
index 4566a09b..b6f0ec79 100644
--- a/boards/default_src/micropython/blocks/display_onboard.js
+++ b/boards/default_src/micropython/blocks/display_onboard.js
@@ -822,7 +822,9 @@ export const mpython_pbm_image = {
["Water_level_0", "progres_picture.Water_level_0"],
["Water_level_1", "progres_picture.Water_level_1"],
["Water_level_2", "progres_picture.Water_level_2"],
- ["Water_level_3", "progres_picture.Water_level_3"]
+ ["Water_level_3", "progres_picture.Water_level_3"],
+ ["YES", "informatio_picture.YES"],
+ ["NO", "informatio_picture.NO"]
]
};
@@ -1330,6 +1332,23 @@ export const draw_pointer = {
}
};
+export const nova_draw_pointer = {
+ init: function () {
+ this.setColour(DISPLAY_ONBOARD_HUE);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.DRAW_POINTER)
+ .appendField(Blockly.Msg.DRAW_POINTER_ANGLE);
+ this.appendValueInput('angle');
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.MIXLY_DRAW_POINTER_DU);
+ this.appendValueInput('VAR')
+ .appendField(Blockly.Msg.HTML_COLOUR);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setInputsInline(true);
+ this.setTooltip(Blockly.Msg.DRAW_POINTER_TOOLTIP);
+ }
+};
/**
* @deprecated To be removed in the future
*/
diff --git a/boards/default_src/micropython/blocks/sensor_extern.js b/boards/default_src/micropython/blocks/sensor_extern.js
index c4ddcc00..730d1873 100644
--- a/boards/default_src/micropython/blocks/sensor_extern.js
+++ b/boards/default_src/micropython/blocks/sensor_extern.js
@@ -896,6 +896,22 @@ export const sensor_ms5611_extern = {
}
};
+export const sensor_ms5611_extern_altitude = {
+ init: function () {
+ this.setColour(SENSOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_Altitude + Blockly.Msg.MSG.catSensor + " MS5611")
+ .setCheck("var");
+ this.appendValueInput('VAR')
+ .appendField(Blockly.Msg.MIXLY_REF_TO_PRESSURE);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.MIXLY_CAL_TO_ALTITUDE);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setInputsInline(true);
+ }
+};
+
export const sensor_QMC5883L_extern = {
init: function () {
this.setColour(SENSOR_EXTERN_HUE);
diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js
index 40fec62d..529b04cf 100644
--- a/boards/default_src/micropython/generators/display_onboard.js
+++ b/boards/default_src/micropython/generators/display_onboard.js
@@ -934,9 +934,35 @@ export const onboard_tft_display_shape_circle = function (block, generator) {
export const draw_pointer = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
- generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
+ if (version == 'mixgo_nova'){
+ generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
+ var angle = generator.valueToCode(this, 'angle', generator.ORDER_ASSIGNMENT);
+ var code = "onboard_tft.pointern(angle=" + angle + ")\n";
+ }else{
+ generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
+ var angle = generator.valueToCode(this, 'angle', generator.ORDER_ASSIGNMENT);
+ var code = "onboard_matrix.pointern(angle=" + angle + ")\n";
+ }
+ return code;
+}
+
+export const nova_draw_pointer = function (_, generator) {
+ var version = Boards.getSelectedBoardKey().split(':')[2]
+ generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var angle = generator.valueToCode(this, 'angle', generator.ORDER_ASSIGNMENT);
- var code = "onboard_matrix.pointern(angle=" + angle + ")\n";
+ var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ if (color.slice(0, 2) == "0x") {
+ var code = "onboard_tft.pointern(angle=" + angle + ","+ color +")\n";
+ } else {
+ const rgbValues = color.match(/\d+/g);
+ const r = parseInt(rgbValues[0]);
+ const g = parseInt(rgbValues[1]);
+ const b = parseInt(rgbValues[2]);
+ var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
+ var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
+ var code = "onboard_tft.pointern(angle=" + angle + ', 0x' + rgb565.toString(16) + ")\n";
+ }
+ var code = "onboard_tft.pointern(angle=" + angle + ")\n";
return code;
}
diff --git a/boards/default_src/micropython/generators/sensor_extern.js b/boards/default_src/micropython/generators/sensor_extern.js
index 939eafb7..835fe056 100644
--- a/boards/default_src/micropython/generators/sensor_extern.js
+++ b/boards/default_src/micropython/generators/sensor_extern.js
@@ -349,6 +349,14 @@ export const sensor_ms5611_extern = function (_, generator) {
return [code, generator.ORDER_ATOMIC];
}
+export const sensor_ms5611_extern_altitude = function (_, generator) {
+ var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ generator.definitions_['import_ms5611'] = 'import ms5611';
+ var code = sub + '.altitude('+ v +')\n';
+ return code ;
+}
+
export const sensor_ltr381_extern = function (_, generator) {
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
diff --git a/boards/default_src/micropython/generators/sensor_onboard.js b/boards/default_src/micropython/generators/sensor_onboard.js
index 7e102e04..f4fb0af2 100644
--- a/boards/default_src/micropython/generators/sensor_onboard.js
+++ b/boards/default_src/micropython/generators/sensor_onboard.js
@@ -268,16 +268,28 @@ export const sensor_get_temperature = function (_, generator) {
export const rfid_readid = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
- generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
- var code = 'onboard_rfid.read_card(0, x="id")';
+ if(version == 'mixgo_mini'){
+ generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
+ var code = 'ext_rfid.read_card(0, x="id")';
+ }else{
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.read_card(0, x="id")';
+ }
return [code, generator.ORDER_ATOMIC];
}
export const rfid_readcontent = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);
- generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
- var code = 'onboard_rfid.read_card(' + sector + ', x="content")';
+ if(version == 'mixgo_mini'){
+ generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
+ var code = 'ext_rfid.read_card(' + sector + ')';
+ }else{
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.read_card(' + sector + ', x="content")';
+ }
return [code, generator.ORDER_ATOMIC];
}
@@ -285,8 +297,14 @@ export const rfid_write = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);
var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);
- generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
- var code = 'onboard_rfid.write_card(' + cnt + ', ' + sector + ')\n';
+ if(version == 'mixgo_mini'){
+ generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
+ var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')\n';
+ }else{
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.write_card(' + cnt + ', ' + sector + ')\n';
+ }
return code;
}
@@ -294,8 +312,13 @@ export const rfid_write_return = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);
var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);
- generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
- var code = 'onboard_rfid.write_card(' + cnt + ', ' + sector + ')';
+ if (version == "mixgo_mini") {
+ generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
+ var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')';
+ } else {
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.write_card(' + cnt + ', ' + sector + ')';
+ }
return [code, generator.ORDER_ATOMIC];
}
diff --git a/boards/default_src/micropython_educore/css/color_esp32c3_mixgocc.css b/boards/default_src/micropython_educore/css/color_esp32c3_mixgocc.css
index 002cf8a0..5d89272d 100644
--- a/boards/default_src/micropython_educore/css/color_esp32c3_mixgocc.css
+++ b/boards/default_src/micropython_educore/css/color_esp32c3_mixgocc.css
@@ -178,16 +178,6 @@ div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTr
background-size: 100% auto;
}
-#catMINI_G2.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
- background: url('../../../../common/media/mark/sensor.png') no-repeat;
- background-size: 100% auto;
-}
-
-#catMINI_G2.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
- background: url('../../../../common/media/mark/sensor2.png') no-repeat;
- background-size: 100% auto;
-}
-
#catExternSensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
background: url('../../../../common/media/mark/sensor_extern.png') no-repeat;
background-size: 100% auto;
diff --git a/boards/default_src/micropython_educore/template.xml b/boards/default_src/micropython_educore/template.xml
index b014b759..bc2bf6ce 100644
--- a/boards/default_src/micropython_educore/template.xml
+++ b/boards/default_src/micropython_educore/template.xml
@@ -450,6 +450,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
@@ -2183,41 +2197,6 @@
-
-
-
-
- 0
-
-
-
-
-
-
-
- 0
-
-
-
-
- Mixly
-
-
-
-
-
-
- 0
-
-
-
-
- Mixly
-
-
-
-
-
diff --git a/boards/default_src/micropython_esp32/template.xml b/boards/default_src/micropython_esp32/template.xml
index 65af9369..560964bb 100644
--- a/boards/default_src/micropython_esp32/template.xml
+++ b/boards/default_src/micropython_esp32/template.xml
@@ -474,6 +474,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/micropython_esp32c2/generators/mini_g2.js b/boards/default_src/micropython_esp32c2/generators/mini_g2.js
index e57b2dad..355bf544 100644
--- a/boards/default_src/micropython_esp32c2/generators/mini_g2.js
+++ b/boards/default_src/micropython_esp32c2/generators/mini_g2.js
@@ -27,8 +27,10 @@ export const mini_g2_rfid_readid = function (_, generator) {
generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
var code = 'ext_rfid.read_card(0, x="id")';
} else {
- generator.definitions_['import_mini_g2'] = 'import mini_g2';
- var code = 'mini_g2.ext_rc522.read_card(0, x="id")';
+ // generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ // var code = 'mini_g2.ext_rc522.read_card(0, x="id")';
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.read_card(0, x="id")';
}
return [code, generator.ORDER_ATOMIC];
}
@@ -40,8 +42,10 @@ export const mini_g2_rfid_readcontent = function (_, generator) {
generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
var code = 'ext_rfid.read_card(' + sector + ')';
} else {
- generator.definitions_['import_mini_g2'] = 'import mini_g2';
- var code = 'mini_g2.ext_rc522.read_card(' + sector + ')';
+ // generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ // var code = 'mini_g2.ext_rc522.read_card(' + sector + ')';
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.read_card(' + sector + ', x="content")';
}
return [code, generator.ORDER_ATOMIC];
}
@@ -54,8 +58,10 @@ export const mini_g2_rfid_write = function (_, generator) {
generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')\n';
} else {
- generator.definitions_['import_mini_g2'] = 'import mini_g2';
- var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')\n';
+ // generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ // var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')\n';
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.write_card(' + cnt + ', ' + sector + ')\n';
}
return code;
}
@@ -68,8 +74,10 @@ export const mini_g2_rfid_write_outcome = function (_, generator) {
generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')';
} else {
- generator.definitions_['import_mini_g2'] = 'import mini_g2';
- var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')';
+ // generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ // var code = 'mini_g2.ext_rc522.write_card(' + cnt + ',' + sector + ')';
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.write_card(' + cnt + ', ' + sector + ')';
}
return [code, generator.ORDER_ATOMIC];
}
@@ -81,8 +89,10 @@ export const mini_g2_rfid_status = function (_, generator) {
generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid';
var code = 'ext_rfid.scan_card()==' + key;
} else {
- generator.definitions_['import_mini_g2'] = 'import mini_g2';
- var code = 'mini_g2.ext_rc522.scan_card()==' + key;
+ // generator.definitions_['import_mini_g2'] = 'import mini_g2';
+ // var code = 'mini_g2.ext_rc522.scan_card()==' + key;
+ generator.definitions_['import_' + version + '_onboard_rfid'] = "from " + version + " import onboard_rfid";
+ var code = 'onboard_rfid.scan_card()==' + key;
}
return [code, generator.ORDER_ATOMIC];
}
\ No newline at end of file
diff --git a/boards/default_src/micropython_esp32c2/template.xml b/boards/default_src/micropython_esp32c2/template.xml
index 4415e0c8..8aaba470 100644
--- a/boards/default_src/micropython_esp32c2/template.xml
+++ b/boards/default_src/micropython_esp32c2/template.xml
@@ -448,6 +448,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
@@ -1972,6 +1986,7 @@
+
@@ -1979,7 +1994,6 @@
-
diff --git a/boards/default_src/micropython_esp32c3/template.xml b/boards/default_src/micropython_esp32c3/template.xml
index 0c9aa26f..6458df6f 100644
--- a/boards/default_src/micropython_esp32c3/template.xml
+++ b/boards/default_src/micropython_esp32c3/template.xml
@@ -448,6 +448,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/micropython_esp32s2/template.xml b/boards/default_src/micropython_esp32s2/template.xml
index c33a54df..be548ef4 100644
--- a/boards/default_src/micropython_esp32s2/template.xml
+++ b/boards/default_src/micropython_esp32s2/template.xml
@@ -474,6 +474,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/micropython_esp32s3/blocks/esp32_profile.js b/boards/default_src/micropython_esp32s3/blocks/esp32_profile.js
index 07d6f138..09536490 100644
--- a/boards/default_src/micropython_esp32s3/blocks/esp32_profile.js
+++ b/boards/default_src/micropython_esp32s3/blocks/esp32_profile.js
@@ -129,7 +129,9 @@ pins["元控青春"] = {
["Water_level_0", "progres_picture.Water_level_0"],
["Water_level_1", "progres_picture.Water_level_1"],
["Water_level_2", "progres_picture.Water_level_2"],
- ["Water_level_3", "progres_picture.Water_level_3"]
+ ["Water_level_3", "progres_picture.Water_level_3"],
+ ["YES", "informatio_picture.YES"],
+ ["NO", "informatio_picture.NO"]
],
builtinimg_extern: [["HEART", "matrix32x12.Matrix.HEART"], ["HEART_SMALL", "matrix32x12.Matrix.HEART_SMALL"], ["HAPPY", "matrix32x12.Matrix.HAPPY"], ["SAD", "matrix32x12.Matrix.SAD"], ["SMILE", "matrix32x12.Matrix.SMILE"], ["SILLY", "matrix32x12.Matrix.SILLY"], ["FABULOUS", "matrix32x12.Matrix.FABULOUS"], ["SURPRISED", "matrix32x12.Matrix.SURPRISED"], ["ASLEEP", "matrix32x12.Matrix.ASLEEP"], ["ANGRY", "matrix32x12.Matrix.ANGRY"], ["CONFUSED", "matrix32x12.Matrix.CONFUSED"], ["NO", "matrix32x12.Matrix.NO"], ["YES", "matrix32x12.Matrix.YES"], ["LEFT_ARROW", "matrix32x12.Matrix.LEFT_ARROW"], ["RIGHT_ARROW", "matrix32x12.Matrix.RIGHT_ARROW"], ["DRESS", "matrix32x12.Matrix.DRESS"], ["TRANSFORMERS", "matrix32x12.Matrix.TRANSFORMERS"], ["SCISSORS", "matrix32x12.Matrix.SCISSORS"], ["EXIT", "matrix32x12.Matrix.EXIT"], ["TREE", "matrix32x12.Matrix.TREE"], ["PACMAN", "matrix32x12.Matrix.PACMAN"], ["TARGET", "matrix32x12.Matrix.TARGET"], ["TSHIRT", "matrix32x12.Matrix.TSHIRT"], ["ROLLERSKATE", "matrix32x12.Matrix.ROLLERSKATE"], ["DUCK", "matrix32x12.Matrix.DUCK"], ["HOUSE", "matrix32x12.Matrix.HOUSE"], ["TORTOISE", "matrix32x12.Matrix.TORTOISE"], ["BUTTERFLY", "matrix32x12.Matrix.BUTTERFLY"], ["STICKFIGURE", "matrix32x12.Matrix.STICKFIGURE"], ["GHOST", "matrix32x12.Matrix.GHOST"], ["PITCHFORK", "matrix32x12.Matrix.PITCHFORK"], ["onboard_music_QUAVERS", "matrix32x12.Matrix.onboard_music_QUAVERS"], ["onboard_music_QUAVER", "matrix32x12.Matrix.onboard_music_QUAVER"], ["onboard_music_CROTCHET", "matrix32x12.Matrix.onboard_music_CROTCHET"], ["COW", "matrix32x12.Matrix.COW"], ["RABBIT", "matrix32x12.Matrix.RABBIT"], ["SQUARE_SMALL", "matrix32x12.Matrix.SQUARE_SMALL"], ["SQUARE", "matrix32x12.Matrix.SQUARE"], ["DIAMOND_SMALL", "matrix32x12.Matrix.DIAMOND_SMALL"], ["DIAMOND", "matrix32x12.Matrix.DIAMOND"], ["CHESSBOARD", "matrix32x12.Matrix.CHESSBOARD"], ["TRIANGLE_LEFT", "matrix32x12.Matrix.TRIANGLE_LEFT"], ["TRIANGLE", "matrix32x12.Matrix.TRIANGLE"], ["SNAKE", "matrix32x12.Matrix.SNAKE"], ["UMBRELLA", "matrix32x12.Matrix.UMBRELLA"], ["SKULL", "matrix32x12.Matrix.SKULL"], ["GIRAFFE", "matrix32x12.Matrix.GIRAFFE"], ["SWORD", "matrix32x12.Matrix.SWORD"]],
imglist: [["ALL_CLOCKS", "matrix.Image.ALL_CLOCKS"], ["ALL_ARROWS", "matrix.Image.ALL_ARROWS"]],
diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml
index deb7230b..cf8c3e3f 100644
--- a/boards/default_src/micropython_esp32s3/template.xml
+++ b/boards/default_src/micropython_esp32s3/template.xml
@@ -474,6 +474,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
@@ -1576,16 +1590,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -2274,6 +2278,21 @@
+
+
+
+ 0
+
+
+
+
+ #ffffff
+
+
+ 255,255,0
+
+
+
@@ -4009,6 +4028,18 @@
+
+
+
+ xsensor
+
+
+
+
+ 0
+
+
+
diff --git a/boards/default_src/micropython_k210_mixgoai/template.xml b/boards/default_src/micropython_k210_mixgoai/template.xml
index 31793106..dfb38005 100644
--- a/boards/default_src/micropython_k210_mixgoai/template.xml
+++ b/boards/default_src/micropython_k210_mixgoai/template.xml
@@ -426,6 +426,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/micropython_nrf51822_microbit/template.xml b/boards/default_src/micropython_nrf51822_microbit/template.xml
index 9f872093..f6d535ea 100644
--- a/boards/default_src/micropython_nrf51822_microbit/template.xml
+++ b/boards/default_src/micropython_nrf51822_microbit/template.xml
@@ -283,6 +283,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/micropython_nrf51822_mithoncc/template.xml b/boards/default_src/micropython_nrf51822_mithoncc/template.xml
index eb230fd9..d6e05c3c 100644
--- a/boards/default_src/micropython_nrf51822_mithoncc/template.xml
+++ b/boards/default_src/micropython_nrf51822_mithoncc/template.xml
@@ -209,6 +209,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/micropython_robot/template.xml b/boards/default_src/micropython_robot/template.xml
index 92dfe921..ddf629b0 100644
--- a/boards/default_src/micropython_robot/template.xml
+++ b/boards/default_src/micropython_robot/template.xml
@@ -461,6 +461,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/python/blocks/math.js b/boards/default_src/python/blocks/math.js
index 64002e29..63419cb4 100644
--- a/boards/default_src/python/blocks/math.js
+++ b/boards/default_src/python/blocks/math.js
@@ -674,4 +674,28 @@ export const generate_cartesian_product = {
this.setTitleValue(newName, 'VAR');
}
}
-}
\ No newline at end of file
+}
+
+export const math_radian_to_degree = {
+ init: function () {
+ this.setColour(MATH_HUE);
+ this.setOutput(true)
+ this.appendValueInput('VAR')
+ .appendField(Blockly.Msg.MIXLY_SET_RADIAN);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.MIXLY_TRANS_TO_ANGLE);
+ this.setInputsInline(true);
+ }
+};
+
+export const math_degree_to_radian = {
+ init: function () {
+ this.setColour(MATH_HUE);
+ this.setOutput(true)
+ this.appendValueInput('VAR')
+ .appendField(Blockly.Msg.MIXLY_SET_DEGREE);
+ this.appendDummyInput()
+ .appendField(Blockly.Msg.MIXLY_TRANS_TO_RADIAN);
+ this.setInputsInline(true);
+ }
+};
\ No newline at end of file
diff --git a/boards/default_src/python/generators/math.js b/boards/default_src/python/generators/math.js
index ae212315..643f7c95 100644
--- a/boards/default_src/python/generators/math.js
+++ b/boards/default_src/python/generators/math.js
@@ -321,4 +321,18 @@ export const generate_cartesian_product = function (_, generator) {
code = `itertools.product(${items.join(', ')}, repeat=${re})`;
}
return [code, generator.ORDER_ATOMIC];
+}
+
+export const math_radian_to_degree = function (_, generator) {
+ generator.definitions_.import_math = "import math";
+ var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ var code = 'math.degrees('+ v + ')';
+ return [code, generator.ORDER_ATOMIC];
+}
+
+export const math_degree_to_radian = function (_, generator) {
+ generator.definitions_.import_math = "import math";
+ var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ var code = 'math.radians('+ v + ')';
+ return [code, generator.ORDER_ATOMIC];
}
\ No newline at end of file
diff --git a/boards/default_src/python_mixpy/template.xml b/boards/default_src/python_mixpy/template.xml
index 7b805f49..8797774b 100644
--- a/boards/default_src/python_mixpy/template.xml
+++ b/boards/default_src/python_mixpy/template.xml
@@ -396,6 +396,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/boards/default_src/python_pyodide/template.xml b/boards/default_src/python_pyodide/template.xml
index ab8d189d..d5f80f09 100644
--- a/boards/default_src/python_pyodide/template.xml
+++ b/boards/default_src/python_pyodide/template.xml
@@ -396,6 +396,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js
index e6316c6e..c4cf9525 100644
--- a/common/msg/blockly/en.js
+++ b/common/msg/blockly/en.js
@@ -3918,4 +3918,10 @@ En.MIXLY_SET_MAXIMUM_HISTORICAL_SESSIONS_NUM = 'Set Maximum Number of Historical
En.MIXLY_LLM_CHAT = 'Chat with Large Language Model';
En.MIXLY_LLM_CONTENT_CALLBACK = 'Result Output Callback';
En.MIXLY_EMPTY_HISTORY = 'Clear History';
+En.MIXLY_SET_RADIAN = 'convert radians';
+En.MIXLY_TRANS_TO_ANGLE = 'to angles';
+En.MIXLY_SET_DEGREE = 'convert angles';
+En.MIXLY_TRANS_TO_RADIAN = 'to radians';
+En.MIXLY_REF_TO_PRESSURE = 'Reference pressure';
+En.MIXLY_CAL_TO_ALTITUDE = 'Calculate the altitude';
})();
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index 9c398b9f..bd7a1c3c 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -4078,5 +4078,10 @@ ZhHans.MIXLY_LLM_CONTENT_CALLBACK = '结果输出回调';
// ZhHans.MIXLY_SELECT_MODEL = '选择模型';
// ZhHans.MIXLY_CLEAR_USER_HISTORY = '清除用户的历史记录';
ZhHans.MIXLY_EMPTY_HISTORY = '清空历史记录';
-
+ZhHans.MIXLY_SET_RADIAN = '将弧度';
+ZhHans.MIXLY_TRANS_TO_ANGLE = '转换为角度';
+ZhHans.MIXLY_SET_DEGREE = '将角度';
+ZhHans.MIXLY_TRANS_TO_RADIAN = '转换为弧度';
+ZhHans.MIXLY_REF_TO_PRESSURE = '参考气压';
+ZhHans.MIXLY_CAL_TO_ALTITUDE = '计算获取海拔';
})();
\ No newline at end of file
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index c3ef7551..8b9cf42f 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -4072,4 +4072,10 @@ ZhHant.MIXLY_SET_MAXIMUM_HISTORICAL_SESSIONS_NUM = '設定歷史對話記錄最
ZhHant.MIXLY_LLM_CHAT = '與大語言模型進行對話';
ZhHant.MIXLY_LLM_CONTENT_CALLBACK = '結果輸出回調';
ZhHant.MIXLY_EMPTY_HISTORY = '清空歷史記錄';
+ZhHant.MIXLY_SET_RADIAN = '將弧度';
+ZhHant.MIXLY_TRANS_TO_ANGLE = '轉換為角度';
+ZhHant.MIXLY_SET_DEGREE = '將角度';
+ZhHant.MIXLY_TRANS_TO_RADIAN = '轉換為弧度';
+ZhHant.MIXLY_REF_TO_PRESSURE = '參考氣壓';
+ZhHant.MIXLY_CAL_TO_ALTITUDE = '計算獲取海拔';
})();
\ No newline at end of file