From 2b2093305350329dd68d61d4b08c560ee295824a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Wed, 14 May 2025 00:27:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(boards):=20=E4=B8=BAmp=E4=B8=8B=E5=A4=96?= =?UTF-8?q?=E6=8E=A5ws2812=E6=B7=BB=E5=8A=A0=20`=E8=B7=91=E9=A9=AC?= =?UTF-8?q?=E7=81=AF`=20=E5=92=8C=20`=E5=BD=A9=E8=99=B9`=20=E6=95=88?= =?UTF-8?q?=E6=9E=9C=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../micropython/blocks/actuator_extern.js | 64 ++++++++++++++++--- .../micropython/generators/actuator_extern.js | 57 ++++++++++------- .../generators/actuator_onboard.js | 54 ++++++++-------- .../micropython_esp32/template.xml | 42 +++++++++++- .../default_src/micropython_esp32c2/export.js | 2 + .../default_src/micropython_esp32c2/index.js | 2 + .../micropython_esp32c2/template.xml | 39 +++++++++++ .../micropython_esp32c3/template.xml | 39 +++++++++++ .../micropython_esp32s2/template.xml | 39 +++++++++++ .../micropython_esp32s3/template.xml | 39 +++++++++++ 10 files changed, 318 insertions(+), 59 deletions(-) diff --git a/boards/default_src/micropython/blocks/actuator_extern.js b/boards/default_src/micropython/blocks/actuator_extern.js index 124f4081..b700161f 100644 --- a/boards/default_src/micropython/blocks/actuator_extern.js +++ b/boards/default_src/micropython/blocks/actuator_extern.js @@ -398,7 +398,7 @@ export const actuator_neopixel_init = { init: function () { this.setColour(ACTUATOR_EXTERN_HUE); this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_RGB) + .appendField(Blockly.Msg.MIXLY_RGB); this.appendValueInput('SUB') .appendField(Blockly.Msg.MIXLY_SETUP) .setCheck("var"); @@ -421,7 +421,7 @@ export const actuator_neopixel_rgb = { init: function () { this.setColour(ACTUATOR_EXTERN_HUE); this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_RGB) + .appendField(Blockly.Msg.MIXLY_RGB); this.appendValueInput('SUB') .setCheck("var"); // .appendField(Blockly.Msg.MIXLY_SETUP) @@ -453,7 +453,7 @@ export const actuator_neopixel_rgb_all = { init: function () { this.setColour(ACTUATOR_EXTERN_HUE); this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_RGB) + .appendField(Blockly.Msg.MIXLY_RGB); this.appendValueInput('SUB') .setCheck("var"); this.appendValueInput("RVALUE") @@ -480,11 +480,7 @@ export const actuator_neopixel_write = { init: function () { this.setColour(ACTUATOR_EXTERN_HUE); this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_RGB) - // this.appendValueInput("PIN", Number) - // .setCheck(Number) - // .setAlign(Blockly.inputs.Align.RIGHT) - // .appendField(Blockly.Msg.MIXLY_PIN); + .appendField(Blockly.Msg.MIXLY_RGB); this.appendValueInput('SUB') .setCheck("var"); this.appendDummyInput() @@ -497,6 +493,58 @@ export const actuator_neopixel_write = { } }; +export const actuator_neopixel_rgb_show_all_rainbow = { + init: function () { + this.setColour(ACTUATOR_EXTERN_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_RGB); + this.appendValueInput('SUB') + .setCheck("var"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_RAINBOW); + this.appendValueInput('time') + .setCheck(Number) + .appendField(Blockly.Msg.MIXLY_DURATION) + .appendField(Blockly.Msg.MIXLY_MILLIS); + this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setTooltip(''); + } +}; + +export const actuator_neopixel_rgb_show_all_chase = { + init: function () { + this.setColour(ACTUATOR_EXTERN_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_RGB); + this.appendValueInput('SUB') + .setCheck("var"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_CHASE); + this.appendValueInput("RVALUE") + .setCheck(Number) + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField(Blockly.Msg.MIXLY_RGB_R); + this.appendValueInput("GVALUE") + .setCheck(Number) + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField(Blockly.Msg.MIXLY_RGB_G); + this.appendValueInput("BVALUE") + .setCheck(Number) + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField(Blockly.Msg.MIXLY_RGB_B); + this.appendValueInput('time') + .setCheck(Number) + .appendField(Blockly.Msg.PYTHON_RANGE_STEP) + .appendField(Blockly.Msg.MIXLY_MILLIS); + this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setTooltip(''); + } +}; + export const actuator_use_uart_init = { init: function () { this.setColour(ACTUATOR_EXTERN_HUE); diff --git a/boards/default_src/micropython/generators/actuator_extern.js b/boards/default_src/micropython/generators/actuator_extern.js index ef1cccff..6132aae4 100644 --- a/boards/default_src/micropython/generators/actuator_extern.js +++ b/boards/default_src/micropython/generators/actuator_extern.js @@ -178,41 +178,54 @@ export const actuator_extern_led_brightness = function (_, generator) { } export const actuator_neopixel_init = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); - var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC); + const v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + const dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); + const value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC); generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var code = v + ' = neopixel.NeoPixel(machine.Pin(' + dropdown_rgbpin + '), ' + value_ledcount + ')\n'; + generator.definitions_['import_ws2812_Neopixel'] = 'from ws2812 import NeoPixel'; + const code = `${v} = NeoPixel(machine.Pin(${dropdown_rgbpin}), ${value_ledcount})\n`; return code; } export const actuator_neopixel_rgb_all = function (_, generator) { - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = v + '.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\n'; + const v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + const value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); + const value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); + const value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); + const code = `${v}.fill((${value_rvalue}, ${value_gvalue}, ${value_bvalue}))\n`; return code; } export const actuator_neopixel_write = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = v + '.write()\n'; + const v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + const code = `${v}.write()\n`; return code; } export const actuator_neopixel_rgb = function (_, generator) { - generator.definitions_['import_machine'] = 'import machine'; - generator.definitions_['import_neopixel'] = 'import neopixel'; - var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = v + '[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n'; + const v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + const value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); + const value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); + const value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); + const value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); + const code = `${v}[${value_led}] = (${value_rvalue}, ${value_gvalue}, ${value_bvalue})\n`; + return code; +} + +export const actuator_neopixel_rgb_show_all_chase = function (_, generator) { + const v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + const value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); + const value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); + const value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); + const number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); + const code = `${v}.color_chase(${value_rvalue}, ${value_gvalue}, ${value_bvalue}, ${number_time})\n`; + return code; +} + +export const actuator_neopixel_rgb_show_all_rainbow = function (_, generator) { + const v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + const number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); + const code = `${v}.rainbow_cycle(${number_time})\n`; return code; } diff --git a/boards/default_src/micropython/generators/actuator_onboard.js b/boards/default_src/micropython/generators/actuator_onboard.js index a0633b55..b5b7585a 100644 --- a/boards/default_src/micropython/generators/actuator_onboard.js +++ b/boards/default_src/micropython/generators/actuator_onboard.js @@ -203,49 +203,49 @@ export const rm_actuator_led_brightness = function (_, generator) { } export const actuator_onboard_neopixel_write = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var code = 'onboard_rgb.write()\n'; + const version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_[`import_${version}_onboard_rgb`] = `from ${version} import onboard_rgb`; + const code = 'onboard_rgb.write()\n'; return code; } export const actuator_onboard_neopixel_rgb = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = 'onboard_rgb[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n'; + const version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_[`import_${version}_onboard_rgb`] = `from ${version} import onboard_rgb`; + const value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC); + const value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); + const value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); + const value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); + const code = `onboard_rgb[${value_led}] = (${value_rvalue}, ${value_gvalue}, ${value_bvalue})\n`; return code; } export const actuator_onboard_neopixel_rgb_all = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var code = 'onboard_rgb.fill((' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + '))\n'; + const version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_[`import_${version}_onboard_rgb`] = `from ${version} import onboard_rgb`; + const value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); + const value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); + const value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); + const code = `onboard_rgb.fill((${value_rvalue}, ${value_gvalue}, ${value_bvalue}))\n`; return code; } export const actuator_onboard_neopixel_rgb_show_all_chase = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); - var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); - var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); - var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var code = 'onboard_rgb.color_chase(' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ', ' + number_time + ')\n'; + const version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_[`import_${version}_onboard_rgb`] = `from ${version} import onboard_rgb`; + const value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC); + const value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC); + const value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC); + const number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); + const code = `onboard_rgb.color_chase(${value_rvalue}, ${value_gvalue}, ${value_bvalue}, ${number_time})\n`; return code; } export const actuator_onboard_neopixel_rgb_show_all_rainbow = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2] - generator.definitions_['import_' + version + '_onboard_rgb'] = 'from ' + version + ' import onboard_rgb'; - var number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); - var code = 'onboard_rgb.rainbow_cycle(' + number_time + ')\n'; + const version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_[`import_${version}_onboard_rgb`] = `from ${version} import onboard_rgb`; + const number_time = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); + const code = `onboard_rgb.rainbow_cycle(${number_time})\n`; return code; } diff --git a/boards/default_src/micropython_esp32/template.xml b/boards/default_src/micropython_esp32/template.xml index 55a0a9dd..39bd4adf 100644 --- a/boards/default_src/micropython_esp32/template.xml +++ b/boards/default_src/micropython_esp32/template.xml @@ -1704,8 +1704,7 @@ - - + @@ -4482,6 +4481,45 @@ + + + + rgb + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 1000 + + + + + + + rgb + + + + + 1000 + + + diff --git a/boards/default_src/micropython_esp32c2/export.js b/boards/default_src/micropython_esp32c2/export.js index a5a072a8..17bbce95 100644 --- a/boards/default_src/micropython_esp32c2/export.js +++ b/boards/default_src/micropython_esp32c2/export.js @@ -3,6 +3,7 @@ import * as MicropythonESP32C2InoutBlocks from './blocks/inout'; import * as MicropythonESP32C2MiniG2Blocks from './blocks/mini_g2'; import * as MicropythonESP32C2MEGOBlocks from './blocks/me_go'; import * as MicropythonESP32C2PinsBlocks from './blocks/pins'; +import * as MicropythonESP32C2ActuatorExternGenerators from './generators/actuator_extern'; import * as MicropythonESP32C2InoutGenerators from './generators/inout'; import * as MicropythonESP32C2MiniG2Generators from './generators/mini_g2'; import * as MicropythonESP32C2MEGOGenerators from './generators/me_go'; @@ -14,6 +15,7 @@ export { MicropythonESP32C2MiniG2Blocks, MicropythonESP32C2MEGOBlocks, MicropythonESP32C2PinsBlocks, + MicropythonESP32C2ActuatorExternGenerators, MicropythonESP32C2InoutGenerators, MicropythonESP32C2MiniG2Generators, MicropythonESP32C2MEGOGenerators, diff --git a/boards/default_src/micropython_esp32c2/index.js b/boards/default_src/micropython_esp32c2/index.js index 2b50e905..06d80529 100644 --- a/boards/default_src/micropython_esp32c2/index.js +++ b/boards/default_src/micropython_esp32c2/index.js @@ -80,6 +80,7 @@ import { MicropythonESP32C2MiniG2Blocks, MicropythonESP32C2MEGOBlocks, MicropythonESP32C2PinsBlocks, + MicropythonESP32C2ActuatorExternGenerators, MicropythonESP32C2InoutGenerators, MicropythonESP32C2MiniG2Generators, MicropythonESP32C2MEGOGenerators, @@ -171,6 +172,7 @@ Object.assign( MicroPythonBlynkGenerators, MicroPythonCCG1Generators, MicroPythonCEGOGenerators, + MicropythonESP32C2ActuatorExternGenerators, MicropythonESP32C2InoutGenerators, MicropythonESP32C2MiniG2Generators, MicropythonESP32C2MEGOGenerators, diff --git a/boards/default_src/micropython_esp32c2/template.xml b/boards/default_src/micropython_esp32c2/template.xml index 21f0c8a0..bf1aa031 100644 --- a/boards/default_src/micropython_esp32c2/template.xml +++ b/boards/default_src/micropython_esp32c2/template.xml @@ -4385,6 +4385,45 @@ + + + + rgb + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 1000 + + + + + + + rgb + + + + + 1000 + + + diff --git a/boards/default_src/micropython_esp32c3/template.xml b/boards/default_src/micropython_esp32c3/template.xml index 420157e7..17d386d4 100644 --- a/boards/default_src/micropython_esp32c3/template.xml +++ b/boards/default_src/micropython_esp32c3/template.xml @@ -4287,6 +4287,45 @@ + + + + rgb + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 1000 + + + + + + + rgb + + + + + 1000 + + + diff --git a/boards/default_src/micropython_esp32s2/template.xml b/boards/default_src/micropython_esp32s2/template.xml index 3168c883..45e6578a 100644 --- a/boards/default_src/micropython_esp32s2/template.xml +++ b/boards/default_src/micropython_esp32s2/template.xml @@ -4018,6 +4018,45 @@ + + + + rgb + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 1000 + + + + + + + rgb + + + + + 1000 + + + diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index a78379ff..a8628e4c 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -4645,6 +4645,45 @@ + + + + rgb + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 1000 + + + + + + + rgb + + + + + 1000 + + +