Проверьте, подключен ли сервопривод к Arduino.

#include <Servo.h>

Servo esc;

void setup(void) {
  esc.attach(7, 1000, 2000);

  if (esc.attached()) {
    // это всегда выполняется
    // даже если к контакту 7 не подключен сервопривод
  }
}

Я написал код, похожий на тот, что приведен выше.

Проблема в том, что после использования Servo.attach метод Servo.attached всегда возвращает true, даже если на выводе, к которому я прикрепился, ничего нет.

Как проверить, есть ли в контакте, в данном случае 7, действительно провод?

, 👍1


1 ответ


1

Проверить, подключен ли сервопривод или провод физически к контакту, без дополнительных усилий невозможно. Библиотека Servo использует прерывания по таймеру для создания ШИМ-сигнала для сервопривода на используемом контакте. Для этого контакт настроен как ВЫХОД и не может измерять ничего, кроме записанного на него значения. В большинстве серводвигателей вход ШИМ имеет высокое сопротивление, поэтому ток, потребляемый от контакта ШИМ, очень мал.

Чтобы решить вашу проблему, у вас есть 2 возможности:

  1. Используйте специальный разъём, имеющий 2 дополнительных контакта с механическим переключателем, который замыкается при сборке разъёма. (Тот же принцип, что и в держателях SD-карт)
  2. Измерьте ток, который сервопривод потребляет через контакты источника питания, с помощью подходящей схемы.
,