From b06378a79f54757ae404d0b6f5ccdb419080f671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Tue, 29 Apr 2025 21:30:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(boards):=20=E4=BF=AE=E5=A4=8Darduino=5Fesp3?= =?UTF-8?q?2=E4=B8=8B=E8=88=B5=E6=9C=BA=E6=89=A7=E8=A1=8C=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧版舵机库ESP32_Servo: https://github.com/jkb-git/ESP32Servo 新版舵机库ESP32Servo: https://github.com/madhephaestus/ESP32Servo --- .../arduino_esp32/generators/actuator.js | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/boards/default_src/arduino_esp32/generators/actuator.js b/boards/default_src/arduino_esp32/generators/actuator.js index 30c1902f..9b2b096c 100644 --- a/boards/default_src/arduino_esp32/generators/actuator.js +++ b/boards/default_src/arduino_esp32/generators/actuator.js @@ -10,29 +10,43 @@ export const servo_move = function (_, generator) { var dropdown_pin = this.getFieldValue('PIN'); var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC); var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '0' - generator.definitions_['include_ESP32_Servo'] = '#include '; - generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';'; - generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ',500,2500);'; - var code = 'servo_' + dropdown_pin + '.write(' + value_degree + ');\n' + 'delay(' + delay_time + ');\n'; + generator.definitions_['include_ESP32Servo'] = '#include '; + generator.definitions_[`var_declare_servo_${dropdown_pin}`] = `Servo servo_${dropdown_pin};`; + generator.setups_['setup_servo'] = 'ESP32PWM::allocateTimer(0);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(1);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(2);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(3);\n'; + generator.setups_[`setup_servo_${dropdown_pin}`] = `servo_${dropdown_pin}.setPeriodHertz(50);\n` + + generator.INDENT + `servo_${dropdown_pin}.attach(${dropdown_pin}, 500, 2500);`; + var code = `servo_${dropdown_pin}.write(${value_degree});\ndelay(${delay_time});\n`; return code; } export const servo_writeMicroseconds = function (_, generator) { var dropdown_pin = this.getFieldValue('PIN'); var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC); - generator.definitions_['include_ESP32_Servo'] = '#include '; - generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';'; - generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ');'; - var code = 'servo_' + dropdown_pin + '.writeMicroseconds(' + value_degree + ');\n'; + generator.definitions_['include_ESP32Servo'] = '#include '; + generator.definitions_[`var_declare_servo_${dropdown_pin}`] = `Servo servo_${dropdown_pin};`; + generator.setups_['setup_servo'] = 'ESP32PWM::allocateTimer(0);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(1);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(2);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(3);\n'; + generator.setups_[`setup_servo_${dropdown_pin}`] = `servo_${dropdown_pin}.attach(${dropdown_pin});`; + var code = `servo_${dropdown_pin}.writeMicroseconds(${value_degree});\n`; return code; } export const servo_read_degrees = function (_, generator) { var dropdown_pin = this.getFieldValue('PIN'); - generator.definitions_['include_ESP32_Servo'] = '#include '; - generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';'; - generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ');'; - var code = 'servo_' + dropdown_pin + '.read()'; + generator.definitions_['include_ESP32Servo'] = '#include '; + generator.definitions_[`var_declare_servo_${dropdown_pin}`] = `Servo servo_${dropdown_pin};`; + generator.setups_['setup_servo'] = 'ESP32PWM::allocateTimer(0);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(1);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(2);\n' + + generator.INDENT + 'ESP32PWM::allocateTimer(3);\n'; + generator.setups_[`setup_servo_${dropdown_pin}`] = `servo_${dropdown_pin}.setPeriodHertz(50);\n` + + generator.INDENT + `servo_${dropdown_pin}.attach(${dropdown_pin}, 500, 2500);`; + var code = `servo_${dropdown_pin}.read()`; return [code, generator.ORDER_ATOMIC]; }