Я новичок в Arduino / ESP32. Я хочу управлять несколькими серводвигателями с помощью ESP32. Я хочу управлять всеми сервоприводами на разных скоростях и хочу использовать синусоидальную логику для управления скоростью.
У меня есть код, который может управлять 2 сервоприводами отдельно. Я приложил код здесь,
#include <ESP32Servo.h>
#include "esp32-hal-ledc.h"
// create two servo objects
Servo servo1SV;
Servo servo2SV;
// Published values of servos; adjust if needed
int minUs = 550;
int maxUs = 2250;
// These are all GPIO pins on the ESP32
// Recommended pins include 2,4,12-19,21-23,25-27,32-33
int servo1SVPin = 15; //outlet valve
int servo2SVPin = 16; //inlet valve
int pos = 0; // position in degrees
ESP32PWM pwm;
void setup() {
Serial.begin(115200);
servo1SV.setPeriodHertz(50); // Standard 50hz servo
servo2SV.setPeriodHertz(50); // Standard 50hz servo
}
void loop() {
servo1SV.attach(servo1SVPin, 500, maxUs);
servo2SV.attach(servo2SVPin, minUs, maxUs);
//// About outlet valve
for (pos = 0; pos <= 85; pos += 1) { // sweep from 0 degrees to 85 degrees
// in steps of 1 degree
servo1SV.write(pos);
delay(10); // Opening of outlet valve
}
delay(5000); // Outlet valve stay openned for 5 sec
for (pos = 85; pos >= 0; pos -= 1) { // sweep from 85 degrees to 0 degrees
servo1SV.write(pos);
delay(10); // closing of outlet valve
}
// About inlet valve
for (pos = 0; pos <= 70; pos += 1) { // sweep from 0 degrees to 70 degrees
// in steps of 1 degree
servo2SV.write(pos);
delay(10); // Opening of inlet valve
}
delay(5000); // Inlet valve stay openned for 5 sec
for (pos = 70; pos >= 0; pos -= 1) { // sweep from 70 degrees to 0 degrees
servo2SV.write(pos);
delay(10); // Opening of inlet valve
}
servo1SV.detach();
servo2SV.detach();
delay(5000);
}
Я хочу тот же вывод, который дается этим кодом, но с использованием синусоиды. Но я не знаю, как реализовать синусоидальную логику в ESP32. Как я могу это сделать?