Я зделал ногу для робота паука но после передвижения ноги то серво привод которий двигает всю ногу начинает сильновибрировать из сторони в сторону и так до бесконечности. Я же один серво привод так сломал, что делать? Вот код:
‘’'#include <iarduino_MultiServo.h>
iarduino_MultiServo MSS;
class Servo {
public:
Servo(int zero, int pin) {
_zero = zero;
_pin = pin;
_currentDeg = zero;
pinMode(_pin, OUTPUT);
}
void write(int deg, int speed) {
Serial.print("deg ");
Serial.println(deg);
Serial.print("pin ");
Serial.println(_pin);
if (deg != 1) { // Skip movement if deg is 1
// Calculate the number of steps based on speed
int steps = abs(deg - _currentDeg);
int increment = deg > _currentDeg ? 1 : -1;
// Perform synchronous movement
for (int pos = _currentDeg; pos != deg; pos += increment) {
MSS.servoWrite(_pin, pos);
delay(speed); // Delay adjusted for synchronization
}
_currentDeg = deg;
}
}
void seto_0() {
Serial.print("zero ");
Serial.println(_zero);
Serial.print("pin ");
Serial.println(_pin);
write(_zero, 20); // Use the write() method for synchronous movement
}
private:
int _zero, _pin, _currentDeg;
};
struct Angel {
int hip;
int hipsp;
int knee;
int kneesp;
int ankle;
int anklesp;
};
Angel UP = {60, 20, 25, 20, 110, 20};
Angel DOWN = {100, 20, 60, 20, 70, 20};
Servo hip(100, 0);
Servo knee(60, 1);
Servo ankle(110, 2);
Servo leg = {hip, knee, ankle};
void setup() {
Serial.begin(9600);
MSS.servoSet(0, SERVO_SG90);
MSS.servoSet(1, SERVO_SG90);
MSS.servoSet(2, SERVO_SG90);
MSS.begin();
for (int i = 0; i < sizeof(leg) / sizeof(leg[0]); i++) {
leg[i].seto_0();
}
}
void loop() {
move_leg(UP);
delay(500);
move_leg(DOWN);
delay(500);
}
void move_leg(Angel a) {
int maxSpeed = max(a.hipsp, max(a.kneesp, a.anklesp)); // Find the maximum speed
// Perform synchronous movement of all servos
if (a.knee!=1){
leg[1].write(a.knee, maxSpeed);
}
if (a.hip!=1){
leg[0].write(a.hip, maxSpeed);
}
if (a.ankle!=1){
leg[2].write(a.ankle, maxSpeed);
}
}‘’’