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