Дерганье сервы Arduino

При включении передатчика почему-то сервы начинают дергатся и независимо от угла принимают только положение 180 градусов, также если выключить передатчик то серва возвращается в нужный угол, который передавался в последний момент передатчиком:

#include <SoftwareSerial.h>
#include <Servo.h>

SoftwareSerial radio(2, 3);

uint8_t channels[6] = {0};
Servo motors[4];
uint8_t motors_pins[4] = {4, 5, 6, 7};

void setup() {
  for(uint8_t i = 0; i < sizeof(motors_pins); i++){
    motors[i].attach(motors_pins[i]);
  }

  radio.begin(9600);
  motors[0].writeMicroseconds(800);
}

void loop() {
  if(radio.available()){
    for (uint8_t i = 0; i < sizeof(channels) - 1; ++i) {
      channels[i] = channels[i + 1];
    }
    channels[sizeof(channels) - 1] = radio.read();

    if(channels[0] == 0x12 && channels[sizeof(channels) - 1] == 0x52){
      motors[0].writeMicroseconds(map(channels[1], 0, 255, 950, 2300));
      motors[1].write(channels[2]);
      motors[2].write(channels[3]);
      motors[3].write(channels[4]);
    }
  }
}

Почему это происходит и как это исправить?


Ответы (0 шт):