Arduino SoftwareServo и Init ESC

#arduino #motordriver

#arduino #motordriver

Вопрос:

У меня подключено 4 esc, и я хочу управлять ими с помощью SoftwareServo.

Я могу управлять ими с помощью сервопривода.h таким образом:

   for(int i = 0; i < 4; i  )
    escS[i].attach(escPins[i]);
  for(int i = 0; i < 4; i  )
    escS[i].write(180);
  delay(2000);
  for(int i = 0; i < 4; i  )
    escS[i].write(90);
  delay(2000);

  escS[0].write(0);
  escS[1].write(0);
  escS[2].write(0);
  escS[3].write(0);
  

Я должен сделать это, чтобы инициализировать ESC, но я не могу добиться того же эффекта, используя SoftwareServo.h; Должно быть, я делаю что-то не так:

   for(int i = 0; i < 4; i  )
    escSS[i].attach(escPins[i]);
  for(int i = 0; i < 4; i  )
    escSS[i].write(180);
  SoftwareServo::refresh();
  delay(2000);
  for(int i = 0; i < 4; i  )
    escSS[i].write(90);
  SoftwareServo::refresh();
  delay(2000);

  escSS[0].write(0);
  escSS[1].write(0);
  escSS[2].write(0);
  escSS[3].write(0);
  

Ответ №1:

Я смог решить эту проблему, включив ESC с помощью сервоприводов Servo.h, а затем отсоединив их и подключив SoftwareServo.h SoftwareServos к тем же esc и записав на них с этого момента.

Ответ №2:

Вам необходимо постоянно вызывать SoftwareServo::refresh() во время этих событий delay(). Приведенный здесь пример кода пропускает его на 2000 мс за раз.