修改块

This commit is contained in:
Irene-Maxine
2025-08-01 22:50:05 +08:00
parent f75141b3bb
commit a632268f60
26 changed files with 343 additions and 65 deletions

View File

@@ -1838,3 +1838,16 @@ export const record_audio = {
this.setInputsInline(true);
}
};
export const set_music_volume ={
init: function () {
this.setColour(ACTUATOR_ONBOARD_HUE);
this.appendValueInput('percent')
.appendField(Blockly.Msg.MIXLY_MUSIC_VOLUME_SET);
this.appendDummyInput()
.appendField('%');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};

View File

@@ -195,6 +195,9 @@ export const network_ap_connect = {
this.appendValueInput('essid')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_ESSID);
this.appendValueInput('password')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_ESSID);
this.appendValueInput('channel')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_NETWORK_WIFI_CHANNEL);

View File

@@ -133,6 +133,9 @@ export const timer = {
}
};
/**
* @deprecated To be removed in the future
*/
export const system_timer = {
init: function () {
this.setColour(SYSTEM_HUE);
@@ -176,6 +179,9 @@ export const system_ticks_diff = {
}
};
/**
* @deprecated To be removed in the future
*/
export const system_timer_init = {
init: function () {
this.setColour(SYSTEM_HUE);
@@ -190,6 +196,35 @@ export const system_timer_init = {
}
};
export const set_system_timer = {
init: function () {
this.setColour(SYSTEM_HUE);
this.appendValueInput('VAR')
.appendField("Timer")
.setCheck("var")
.appendField(Blockly.Msg.MIXLY_SETUP);
this.appendValueInput("PIN")
.appendField("ID")
.setCheck(Number);
this.appendValueInput("period")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_mSecond)
.appendField(Blockly.Msg.MIXLY_MODE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, "ONE_SHOT"],
[Blockly.Msg.MIXLY_PYTHON_PERIODIC, "PERIODIC"]
]), "mode");
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_DO)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TIMER_TOOLTIP);
}
};
export const system_wdt_init = {
init: function () {
this.setColour(SYSTEM_HUE);

View File

@@ -791,3 +791,11 @@ export const record_audio = function (_,generator){
var code = 'onboard_bot.mic_pga('+str+','+ t +')\n';
return code;
}
export const set_music_volume = function (_,generator){
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + '_onboard_music'] = 'from ' + version + ' import onboard_music';
var p = generator.valueToCode(this, 'percent', generator.ORDER_ATOMIC);
var code = 'onboard_music.volume('+p+')\n';
return code;
}

View File

@@ -77,8 +77,9 @@ export const network_ap_connect = function (_, generator) {
// generator.setups_['class_wlan'] ='ap = network.WLAN(network.AP_IF)\n'+'ap.active(True)\n';
var varName = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var essid = generator.valueToCode(this, 'essid', generator.ORDER_ATOMIC);
var pw = generator.valueToCode(this, 'password', generator.ORDER_ATOMIC);
var channel = generator.valueToCode(this, 'channel', generator.ORDER_ATOMIC);
return "" + varName + ".config(essid = " + essid + ", channel=" + channel + ")\n";
return "" + varName + ".config(essid = " + essid + ", channel=" + channel + ",password="+ pw +")\n";
}
export const network_scan = function (_, generator) {

View File

@@ -135,6 +135,37 @@ export const timer = function (_, generator) {
return code;
}
export const set_system_timer = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None";
var i = generator.valueToCode(this, "ID", generator.ORDER_NONE) || "None";
var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0";
var mode = this.getFieldValue('mode');
var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None";
var code = v + " = machine.Timer("+ i +",period = " + period + ", mode=machine.Timer." + mode + ", callback=" + callback + ")\n";
return code;
}
export const system_ticks_diff = function (_, generator) {
generator.definitions_['import_time'] = 'import time';
var end = generator.valueToCode(this, "END", generator.ORDER_NONE) || "0";
var start = generator.valueToCode(this, "START", generator.ORDER_NONE) || "0";
var code = "time.ticks_diff(" + end + ", " + start + ")";
return [code, generator.ORDER_ATOMIC];
}
/**
* @deprecated To be removed in the future
*/
export const system_timer_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
generator.definitions_['import_machine'] = 'import machine';
var code = v + ' = machine.Timer(0)\n';
return code;
}
/**
* @deprecated To be removed in the future
*/
export const system_timer = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None";
@@ -147,22 +178,6 @@ export const system_timer = function (_, generator) {
var code = v + ".init(period = " + period + ", mode=machine.Timer." + mode + ", callback=" + callback + ")\n";
return code;
}
export const system_ticks_diff = function (_, generator) {
generator.definitions_['import_time'] = 'import time';
var end = generator.valueToCode(this, "END", generator.ORDER_NONE) || "0";
var start = generator.valueToCode(this, "START", generator.ORDER_NONE) || "0";
var code = "time.ticks_diff(" + end + ", " + start + ")";
return [code, generator.ORDER_ATOMIC];
}
export const system_timer_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
generator.definitions_['import_machine'] = 'import machine';
var code = v + ' = machine.Timer(0)\n';
return code;
}
export const system_wdt_init = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0";

View File

@@ -6896,6 +6896,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -6939,6 +6944,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -399,3 +399,17 @@ export const pins_digital_dot = {
this.setOutput(true, Number);
}
};
export const timer_id_pin = {
init: function () {
this.setColour(PINS_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
["0","0"],
["1","1"],
["2","2"],
["3","3"]
]), 'PIN');
this.setOutput(true, Number);
}
};

View File

@@ -37,3 +37,4 @@ export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;
export const pins_one_more = pins_digital;
export const pins_digital_dot = pins_digital;
export const timer_id_pin = pins_digital;

View File

@@ -237,17 +237,14 @@
</block>
</statement>
</block>
<block type="system_timer_init">
<value name="SUB">
<block type="set_system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
</shadow>
</value>
</block>
<block type="system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
<value name="PIN">
<shadow type="timer_id_pin">
</shadow>
</value>
<value name="period">
@@ -257,7 +254,7 @@
</value>
<value name="callback">
<shadow type="factory_block_return">
<field name="VALUE">tim_callback</field>
<field name="VALUE">tim_6</field>
</shadow>
</value>
</block>
@@ -265,7 +262,7 @@
<mutation>
<arg name="tim"></arg>
</mutation>
<field name="NAME">tim_callback</field>
<field name="NAME">tim_6</field>
<statement name="STACK">
<block type="system_print">
<value name="VAR">
@@ -1712,6 +1709,13 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
<category id="catOnBoardDisplay" name="catOnBoardDisplay" colour='#569A98'
m-show="micropython:esp32:mixgo micropython:esp32:mixgo_pe">
@@ -6768,6 +6772,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -6811,6 +6820,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -399,3 +399,14 @@ export const pins_digital_dot = {
this.setOutput(true, Number);
}
};
export const timer_id_pin = {
init: function () {
this.setColour(PINS_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
["0","0"]
]), 'PIN');
this.setOutput(true, Number);
}
};

View File

@@ -47,3 +47,4 @@ export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;
export const pins_one_more = pins_digital;
export const pins_digital_dot = pins_digital;
export const timer_id_pin = pins_digital;

View File

@@ -212,17 +212,14 @@
</block>
</statement>
</block>
<block type="system_timer_init">
<value name="SUB">
<block type="set_system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
</shadow>
</value>
</block>
<block type="system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
<value name="PIN">
<shadow type="timer_id_pin">
</shadow>
</value>
<value name="period">
@@ -232,7 +229,7 @@
</value>
<value name="callback">
<shadow type="factory_block_return">
<field name="VALUE">tim_callback</field>
<field name="VALUE">tim_6</field>
</shadow>
</value>
</block>
@@ -1776,6 +1773,13 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
<category id="catOnBoardDisplay" name="catOnBoardDisplay" colour='#569A98'
@@ -4651,6 +4655,13 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
</category>
<category id="catExternMonitor" colour='5BA5A5'>
@@ -6688,6 +6699,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -6731,6 +6747,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -399,3 +399,15 @@ export const pins_digital_dot = {
this.setOutput(true, Number);
}
};
export const timer_id_pin = {
init: function () {
this.setColour(PINS_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
["0","0"],
["1","1"]
]), 'PIN');
this.setOutput(true, Number);
}
};

View File

@@ -47,3 +47,4 @@ export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;
export const pins_one_more = pins_digital;
export const pins_digital_dot = pins_digital;
export const timer_id_pin = pins_digital;

View File

@@ -212,17 +212,14 @@
</block>
</statement>
</block>
<block type="system_timer_init">
<value name="SUB">
<block type="set_system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
</shadow>
</value>
</block>
<block type="system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
<value name="PIN">
<shadow type="timer_id_pin">
</shadow>
</value>
<value name="period">
@@ -232,7 +229,7 @@
</value>
<value name="callback">
<shadow type="factory_block_return">
<field name="VALUE">tim_callback</field>
<field name="VALUE">tim_6</field>
</shadow>
</value>
</block>
@@ -1700,6 +1697,13 @@
</block>
<block type="actuator_onboard_neopixel_write">
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
<category id="catOnBoardDisplay" name="catOnBoardDisplay" colour='#569A98'
m-hide='micropython:esp32c3:generic micropython:esp32c3:mixgocar_c3'>
@@ -1823,8 +1827,13 @@
</block>
<block type="display_clear"></block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
<category id="catME_GO" colour="100"
@@ -4537,6 +4546,13 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
</category>
<category id="catExternMonitor" colour='5BA5A5' m-hide='micropython:esp32c3:mixgocar_c3'>
@@ -6575,6 +6591,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -6618,6 +6639,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -399,3 +399,17 @@ export const pins_digital_dot = {
this.setOutput(true, Number);
}
};
export const timer_id_pin = {
init: function () {
this.setColour(PINS_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
["0","0"],
["1","1"],
["2","2"],
["3","3"]
]), 'PIN');
this.setOutput(true, Number);
}
};

View File

@@ -47,3 +47,4 @@ export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;
export const pins_one_more = pins_digital;
export const pins_digital_dot = pins_digital;
export const timer_id_pin = pins_digital;

View File

@@ -237,17 +237,14 @@
</block>
</statement>
</block>
<block type="system_timer_init">
<value name="SUB">
<block type="set_system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
</shadow>
</value>
</block>
<block type="system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
<value name="PIN">
<shadow type="timer_id_pin">
</shadow>
</value>
<value name="period">
@@ -257,7 +254,7 @@
</value>
<value name="callback">
<shadow type="factory_block_return">
<field name="VALUE">tim_callback</field>
<field name="VALUE">tim_6</field>
</shadow>
</value>
</block>
@@ -1651,6 +1648,13 @@
</block>
<block type="actuator_onboard_neopixel_write">
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
<category id="catOnBoardDisplay" name="catOnBoardDisplay" colour='#569A98'
m-hide='micropython:esp32s2:generic'>
@@ -4268,6 +4272,13 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
</category>
<category id="catExternMonitor" colour='5BA5A5'>
@@ -6304,6 +6315,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -6347,6 +6363,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -399,3 +399,17 @@ export const pins_digital_dot = {
this.setOutput(true, Number);
}
};
export const timer_id_pin = {
init: function () {
this.setColour(PINS_HUE);
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
["0","0"],
["1","1"],
["2","2"],
["3","3"]
]), 'PIN');
this.setOutput(true, Number);
}
};

View File

@@ -46,6 +46,7 @@ export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;
export const pins_one_more = pins_digital;
export const pins_digital_dot = pins_digital;
export const timer_id_pin = pins_digital;
export const pins_builtinimg = function (_, generator) {
const PIN_VALUE = this.getFieldValue('PIN');

View File

@@ -237,17 +237,14 @@
</block>
</statement>
</block>
<block type="system_timer_init">
<value name="SUB">
<block type="set_system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
</shadow>
</value>
</block>
<block type="system_timer">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">tim</field>
<value name="PIN">
<shadow type="timer_id_pin">
</shadow>
</value>
<value name="period">
@@ -257,7 +254,7 @@
</value>
<value name="callback">
<shadow type="factory_block_return">
<field name="VALUE">tim_callback</field>
<field name="VALUE">tim_6</field>
</shadow>
</value>
</block>
@@ -1826,6 +1823,13 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
<category id="catOnBoardDisplay" colour='#78B5B4' m-hide='micropython:esp32s3:generic'>
<block type="display_image_builtins_all"></block>
@@ -4997,6 +5001,20 @@
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
<block type="set_music_volume">
<value name="percent">
<shadow type="math_number">
<field name="NUM">100</field>
</shadow>
</value>
</block>
</category>
</category>
<category id="catNova_G1" colour='100' m-show="micropython:esp32s3:mixgo_nova">
@@ -7058,6 +7076,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -7101,6 +7124,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -5354,6 +5354,11 @@
<field name="TEXT">127.16.0.8</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>
@@ -5397,6 +5402,11 @@
<field name="TEXT">SmallCabbage</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">123456</field>
</shadow>
</value>
<value name="channel">
<shadow type="math_number">
<field name="NUM">1</field>

View File

@@ -3973,4 +3973,5 @@ En.MIXLY_JPG_base64_CODE= "JPG's base64 code";
En.MIXLY_IMAGE_OF_FILE = 'code data of image file';
En.MIXLY_ENABLE_STATUS = 'enable status';
En.MIXLY_MICROPHONE_AMPLIFICATION = 'microphone amplification';
En.MIXLY_MUSIC_VOLUME_SET = 'set music volume';
})();

View File

@@ -3691,7 +3691,7 @@ ZhHans.MIXBOT = '超霸大师';
ZhHans.MICROPYTHON_BITBOT_SHUTDOWN_TOOLTIP = '仅电池供电下将关机断电。USB供电下只是关闭电机输出。';
ZhHans.ONBOARD_TFT_DISPLAY_SHAPE_RECT_MESSAGE0 = '绘制 %1 矩形 %2 x %3 y %4 宽 %5 高 %6 颜色 %7 实时刷新: %8';
ZhHans.ONBOARD_TFT_DISPLAY_HVLINE_MESSAGE0 = '绘制 %1 线 %2 x %3 y %4 长度%5 颜色 %6 实时刷新: %7';
ZhHans.mpython_display_line_MESSAGE0 ='绘制 线条%1 x1%2 y1 %3 到 x2 %4 y2 %5 颜色 %6 实时刷新: %7';
ZhHans.mpython_display_line_MESSAGE0 ='绘制 线条%1 x1%2 y1 %3 到 x2 %4 y2 %5 颜色 %6';
ZhHans.MIXLY_TOUCH_SLIDE = "滑动触摸";
ZhHans.MIXLY_TOUCH_SLIDE_TOOLTIP = "触摸值默认接近0往IO3方向触摸滑动值变大往IO4方向触摸滑动值变小。";
ZhHans.MIXLY_EXTERN_SONAR = "超声波传感器";
@@ -4132,4 +4132,5 @@ ZhHans.MIXLY_JPG_base64_CODE= 'JPG的base64编码';
ZhHans.MIXLY_IMAGE_OF_FILE = '图像文件编码数据';
ZhHans.MIXLY_ENABLE_STATUS = '使能状态';
ZhHans.MIXLY_MICROPHONE_AMPLIFICATION = '麦克风放大倍数';
ZhHans.MIXLY_MUSIC_VOLUME_SET = '音量调节';
})();

View File

@@ -4127,4 +4127,5 @@ ZhHant.MIXLY_JPG_base64_CODE= 'JPG的base64編碼';
ZhHant.MIXLY_IMAGE_OF_FILE = '圖像文件編碼數據';
ZhHant.MIXLY_ENABLE_STATUS = '使能狀態';
ZhHant.MIXLY_MICROPHONE_AMPLIFICATION = '麥克風放大倍數';
ZhHant.MIXLY_MUSIC_VOLUME_SET = '音量調節';
})();