From f26ce575c8b9026a9ff835cb975359fd0d0858d7 Mon Sep 17 00:00:00 2001
From: Irene-Maxine <114802521+Irene-Maxine@users.noreply.github.com>
Date: Mon, 18 Nov 2024 02:16:52 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=A4=E4=B8=AA=E5=BA=93?=
=?UTF-8?q?=E7=9A=84=E5=9D=97=E5=BE=AE=E6=B3=A2=E9=9B=B7=E8=BE=BE=E5=92=8C?=
=?UTF-8?q?=E8=AF=AD=E9=9F=B3=E6=92=AD=E6=94=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../micropython/blocks/actuator_extern.js | 118 ++++++++++++++++
.../micropython/blocks/sensor_extern.js | 62 +++++++++
.../micropython/generators/actuator_extern.js | 44 ++++++
.../micropython/generators/sensor_extern.js | 32 +++++
.../micropython_esp32c2/template.xml | 128 ++++++++++++++++++
common/msg/blockly/en.js | 17 +++
common/msg/blockly/zh-hans.js | 17 +++
common/msg/blockly/zh-hant.js | 17 +++
8 files changed, 435 insertions(+)
diff --git a/boards/default_src/micropython/blocks/actuator_extern.js b/boards/default_src/micropython/blocks/actuator_extern.js
index 919ab7de..b5900224 100644
--- a/boards/default_src/micropython/blocks/actuator_extern.js
+++ b/boards/default_src/micropython/blocks/actuator_extern.js
@@ -519,6 +519,124 @@ export const actuator_use_uart_init = {
}
};
+export const actuator_use_uart_init_player = {
+ init: function () {
+ this.setColour(ACTUATOR_EXTERN_HUE);
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + "uart")
+ .appendField(new Blockly.FieldDropdown([
+ ["uart1", "uart1"],
+ ["uart2", "uart2"]
+ ]), "key");
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO + 'NS9300' + Blockly.Msg.MIXLY_MUSIC_PLAYER);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ }
+};
+
+export const player_whether_stop ={
+ init:function(){
+ this.setColour(ACTUATOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_MUSIC_PLAYER)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.MIXLY_WHETHER)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_STOPPED, "0"],
+ [Blockly.Msg.MIXLY_PLAYING, "1"],
+ [Blockly.Msg.MIXLY_PAUSED, "2"]
+ ]), "key");
+ this.setInputsInline(true);
+ this.setOutput(true);
+ }
+};
+
+export const player_set_play = {
+ init:function(){
+ this.setColour(ACTUATOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_MUSIC_PLAYER)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.MIXLY_STAT)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_MP3_PLAY, "1"],
+ [Blockly.Msg.MIXLY_MP3_PAUSE, "2"],
+ [Blockly.Msg.MIXLY_STOP, "3"],
+ [Blockly.Msg.MIXLY_MP3_PREV, "4"],
+ [Blockly.Msg.MIXLY_MP3_NEXT, "5"]
+ ]), "key");
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ }
+};
+
+export const player_set_volume = {
+ init:function(){
+ this.setColour(ACTUATOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_MUSIC_PLAYER)
+ .setCheck("var");
+ this.appendValueInput('volume')
+ .appendField(Blockly.Msg.MIXLY_MP3_VOL +Blockly.Msg.MIXLY_STAT);
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setTooltip(Blockly.Msg.MIXLY_PLAYER_SET_VOLUME_TOOLTIP);
+ }
+}
+
+export const player_set_mode = {
+ init:function(){
+ this.setColour(ACTUATOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_MUSIC_PLAYER)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.MIXLY_MODE+Blockly.Msg.MIXLY_STAT)
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_MP3_LOOP_ALL, "0"],
+ [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "1"],
+ [Blockly.Msg.MIXLY_PLAYER_DIRECTORY_LOOP, "2"],
+ [Blockly.Msg.MIXLY_MP3_LOOP_RAM, "3"],
+ [Blockly.Msg.MIXLY_PLAYER_SINGLE_STOP, "4"],
+ [Blockly.Msg.MIXLY_PLAYER_SEQUENTIAL_PLAY, "5"]
+ ]), "key");
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ }
+};
+
+export const player_play_music = {
+ init:function(){
+ this.setColour(ACTUATOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_MUSIC_PLAYER)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Msg.MIXLY_MICROBIT_JS_START_MELODY,"play"],
+ [Blockly.Msg.MIXLY_PLAYER_INSERT_MUSIC, "insert"]
+ ]), "key");
+ this.appendValueInput('song');
+ this.setInputsInline(true);
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ }
+}
+
+export const player_insert_music ={
+
+}
+
export const syn6288_set_voice = {
init: function () {
this.setColour(ACTUATOR_EXTERN_HUE);
diff --git a/boards/default_src/micropython/blocks/sensor_extern.js b/boards/default_src/micropython/blocks/sensor_extern.js
index ec72a4ef..0cfca1b3 100644
--- a/boards/default_src/micropython/blocks/sensor_extern.js
+++ b/boards/default_src/micropython/blocks/sensor_extern.js
@@ -366,6 +366,68 @@ export const sensor_use_i2c_init = {
}
};
+export const radar_use_i2c_init = {
+ init: function () {
+ this.setColour(SENSOR_EXTERN_HUE);
+ this.appendValueInput('I2CSUB')
+ .appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH + "I2C")
+ .setCheck("var");
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE + Blockly.Msg.MIXLY_RADAR)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
+ .appendField(new Blockly.FieldDropdown([
+ ["CBR817", "CBR817"]
+ ]), "key");
+ this.setInputsInline(true);
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ }
+};
+
+export const radar_set_DELAY_TIME = {
+ init: function () {
+ this.setColour(SENSOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_RADAR)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXlY_INTERACTION+Blockly.Msg.MIXLY_DELAY_TIME);
+ this.appendValueInput('VAR');
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setInputsInline(true);
+ this.setTooltip(Blockly.Msg.MIXLY_THRESHOLD_TOOLTIP);
+ }
+};
+
+export const radar_set_DETECTION_THRESHOLD = {
+ init: function () {
+ this.setColour(SENSOR_EXTERN_HUE);
+ this.appendValueInput('SUB')
+ .appendField(Blockly.Msg.MIXLY_RADAR)
+ .setCheck("var");
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXlY_INTERACTION+Blockly.Msg.MIXLY_DETECTION_THRESHOLD)
+ this.appendValueInput('VAR');
+ this.setPreviousStatement(true);
+ this.setNextStatement(true);
+ this.setInputsInline(true);
+ this.setTooltip(Blockly.Msg.MIXLY_DELAY_TIME_RANGE);
+ }
+};
+
+export const interaction_whether_to_interaction = {
+ init:function(){
+ this.setColour(SENSOR_EXTERN_HUE);
+ this.appendDummyInput("")
+ .appendField(Blockly.Msg.MIXLY_RADAR + Blockly.Msg.MIXLY_GET_TO_INTERACTION)
+ this.setOutput(true);
+ this.setInputsInline(true);
+ }
+};
+
export const sensor_MAX30102_extern = {
init: function () {
this.setColour(SENSOR_EXTERN_HUE);
diff --git a/boards/default_src/micropython/generators/actuator_extern.js b/boards/default_src/micropython/generators/actuator_extern.js
index 6b452376..b1eabbd1 100644
--- a/boards/default_src/micropython/generators/actuator_extern.js
+++ b/boards/default_src/micropython/generators/actuator_extern.js
@@ -224,6 +224,50 @@ export const actuator_use_uart_init = function (_, generator) {
return code;
}
+export const actuator_use_uart_init_player = function (_, generator) {
+ generator.definitions_['import_ns9300'] = 'import ns9300';
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var key = this.getFieldValue('key');
+ var code = v + '=ns9300.NS9300(' + key + ')\n';
+ return code;
+}
+
+export const player_whether_stop = function(_,generator){
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var key = this.getFieldValue('key');
+ var code = v+'.status('+key+')';
+ return [code,generator.ORDER_ATOMIC];
+}
+
+export const player_set_play = function(_,generator){
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var key = this.getFieldValue('key');
+ var code = v+'.control('+key+')\n';
+ return code;
+}
+
+export const player_set_volume = function(_,generator){
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var vol = generator.valueToCode(this, 'volume', generator.ORDER_ATOMIC);
+ var code = v+'.volume('+vol+')\n';
+ return code;
+}
+
+export const player_set_mode = function(_,generator){
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var key = this.getFieldValue('key');
+ var code = v +'.mode('+key+')';
+ return code;
+}
+
+export const player_play_music = function(_,generator){
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var key = this.getFieldValue('key');
+ var s = generator.valueToCode(this, 'song', generator.ORDER_ATOMIC);
+ var code = v +'.'+key+'('+s+')';
+ return code;
+}
+
export const syn6288_set_voice = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
diff --git a/boards/default_src/micropython/generators/sensor_extern.js b/boards/default_src/micropython/generators/sensor_extern.js
index 137e26ff..b132742f 100644
--- a/boards/default_src/micropython/generators/sensor_extern.js
+++ b/boards/default_src/micropython/generators/sensor_extern.js
@@ -216,6 +216,38 @@ export const sensor_use_i2c_init = function (_, generator) {
return code;
}
+export const radar_use_i2c_init = function (_, generator) {
+ var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var iv = generator.valueToCode(this, 'I2CSUB', generator.ORDER_ATOMIC);
+ generator.definitions_['import_machine'] = 'import machine';
+ var key = this.getFieldValue('key');
+ var code;
+ if (key == 'CBR817') {
+ generator.definitions_['import_cbr817'] = 'import cbr817';
+ code = v + ' = cbr817.' + key + "(" + iv + ')\n';
+ }
+ return code;
+}
+
+export const radar_set_DELAY_TIME = function (_, generator) {
+ var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var value = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ var code = sub + '.delay_ms(' + value +')\n';
+ return code;
+}
+
+export const radar_set_DETECTION_THRESHOLD = function (_, generator) {
+ var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
+ var value = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
+ var code = sub + '.threshold(' + value +')\n';
+ return code;
+}
+
+export const interaction_whether_to_interaction = function(_,generator){
+ var code = 'radar.result()';
+ return [code,generator.ORDER_ATOMIC];
+}
+
export const sensor_MAX30102_extern = function (_, generator) {
generator.definitions_['import_max30102'] = 'import max30102';
var key = this.getFieldValue('key');
diff --git a/boards/default_src/micropython_esp32c2/template.xml b/boards/default_src/micropython_esp32c2/template.xml
index 52462617..a10b9d65 100644
--- a/boards/default_src/micropython_esp32c2/template.xml
+++ b/boards/default_src/micropython_esp32c2/template.xml
@@ -3987,6 +3987,68 @@
+
+
+
+ i2c
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ 100000
+
+
+
+
+
+
+ radar
+
+
+
+
+ i2c
+
+
+
+
+
+
+
+
+ radar
+
+
+
+
+ 5000
+
+
+
+
+
+
+ radar
+
+
+
+
+ 500
+
+
+
+
+
@@ -4320,6 +4382,72 @@
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+
+
+ player
+
+
+
+
+
+
+
+
+ player
+
+
+
+
+
+
+ player
+
+
+
+
+
+
+ player
+
+
+
+
+ 20
+
+
+
+
+
+
+ player
+
+
+
+
+
+
+ player
+
+
+
+
+ 0
+
+
+
diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js
index aae6faf9..1ed2e2e6 100644
--- a/common/msg/blockly/en.js
+++ b/common/msg/blockly/en.js
@@ -3760,4 +3760,21 @@ En.MIXLY_INDEX = "index";
En.MIXLY_TOTO_INDEX_SEQUENC_TOOLTIP = "Combine all the items and ordinals of the list into an index sequence, for example (0,'A') into one index sequence";
En.MIXLY_RGB_RAW = 'RGB color primitive value';
En.GET_IR_STRENGTH = 'get Infrared light';
+En.MIXLY_RADAR = 'radar';
+En.MIXlY_INTERACTION = 'reaction';
+En.MIXLY_DETECTION_THRESHOLD ='detect threshold';
+En.MIXLY_DELAY_TIME = 'delay time';
+En.MIXLY_THRESHOLD_TOOLTIP = 'The larger the threshold, the closer the sensing distance';
+En.MIXLY_DELAY_TIME_RANGE = 'The delay time range is 200ms~500ms';
+En.MIXLY_GET_TO_INTERACTION ='get whether to trigger sensing';
+En.MIXLY_MUSIC_PLAYER = 'Music player';
+En.MIXLY_WHETHER ='whether';
+En.MIXLY_STOPPED ='stopped';
+En.MIXLY_PLAYING ='playing';
+En.MIXLY_PAUSED = 'paused';
+En.MIXLY_PLAYER_SET_VOLUME_TOOLTIP = 'The volume range is 0~30';
+En.MIXLY_PLAYER_DIRECTORY_LOOP = 'directory loop';
+En.MIXLY_PLAYER_SINGLE_STOP = 'single stop';
+En.MIXLY_PLAYER_SEQUENTIAL_PLAY ='sequential play';
+En.MIXLY_PLAYER_INSERT_MUSIC ='interjection';
})();
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index b86efae2..a2a06d08 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -3913,4 +3913,21 @@ ZhHans.MIXLY_EVERY_PER_ELEPER_ELEMENT = "每个元素重复";
ZhHans.MIXLY_EMPTY_REMINDER = "至少需要一个可迭代对象";
ZhHans.MIXLY_RGB_RAW = 'RGB颜色原始值';
ZhHans.GET_IR_STRENGTH = '获取红外光';
+ZhHans.MIXLY_RADAR = '微波雷达';
+ZhHans.MIXlY_INTERACTION = '感应';
+ZhHans.MIXLY_DETECTION_THRESHOLD ='检测门限';
+ZhHans.MIXLY_DELAY_TIME = '延时时间';
+ZhHans.MIXLY_THRESHOLD_TOOLTIP = '门限设置越大,感应距离越近';
+ZhHans.MIXLY_DELAY_TIME_RANGE = '延时时间范围为200ms~500ms';
+ZhHans.MIXLY_GET_TO_INTERACTION ='获取是否触发感应';
+ZhHans.MIXLY_MUSIC_PLAYER = '音乐播放器';
+ZhHans.MIXLY_WHETHER ='是否';
+ZhHans.MIXLY_STOPPED ='已停止';
+ZhHans.MIXLY_PLAYING ='在播放';
+ZhHans.MIXLY_PAUSED = '已暂停';
+ZhHans.MIXLY_PLAYER_SET_VOLUME_TOOLTIP = '音量范围为0~30';
+ZhHans.MIXLY_PLAYER_DIRECTORY_LOOP = '目录循环';
+ZhHans.MIXLY_PLAYER_SINGLE_STOP = '单曲停止';
+ZhHans.MIXLY_PLAYER_SEQUENTIAL_PLAY ='顺序播放';
+ZhHans.MIXLY_PLAYER_INSERT_MUSIC ='插播歌曲';
})();
\ No newline at end of file
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index 0432c171..756b8ddb 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -3763,4 +3763,21 @@ ZhHant.MIXLY_INDEX = "序號";
ZhHant.MIXLY_TOTO_INDEX_SEQUENC_TOOLTIP = "將列表的所有項和序號組合為索引序列,例如(0,'A')為一個索引序列";
ZhHant.MIXLY_RGB_RAW = 'RGB顏色原始值';
ZhHant.GET_IR_STRENGTH = '獲取紅外光';
+ZhHant.MIXLY_RADAR = '微波雷達';
+ZhHant.MIXlY_INTERACTION = '感應';
+ZhHant.MIXLY_DETECTION_THRESHOLD ='檢測門限';
+ZhHant.MIXLY_DELAY_TIME = '延時時間';
+ZhHant.MIXLY_THRESHOLD_TOOLTIP = '門限設置越大,感應距離越近';
+ZhHant.MIXLY_DELAY_TIME_RANGE = '延時時間範圍為200ms~500ms';
+ZhHant.MIXLY_GET_TO_INTERACTION ='獲取是否觸發感應';
+ZhHant.MIXLY_MUSIC_PLAYER = '音樂播放器';
+ZhHant.MIXLY_WHETHER ='是否';
+ZhHant.MIXLY_STOPPED ='已停止';
+ZhHant.MIXLY_PLAYING ='在播放';
+ZhHant.MIXLY_PAUSED = '已暫停';
+ZhHant.MIXLY_PLAYER_SET_VOLUME_TOOLTIP = '音量範圍為0~30';
+ZhHant.MIXLY_PLAYER_DIRECTORY_LOOP = '目錄循環';
+ZhHant.MIXLY_PLAYER_SINGLE_STOP = '單曲停止';
+ZhHant.MIXLY_PLAYER_SEQUENTIAL_PLAY ='順序播放';
+ZhHant.MIXLY_PLAYER_INSERT_MUSIC ='插播歌曲';
})();
\ No newline at end of file