Дерганье сервы 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]);
}
}
}
Почему это происходит и как это исправить?