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
+
+
+