Почему мой серводвигатель всегда включен?

Почему мой серводвигатель всегда включен?

Schematic

#include <Servo.h> 

Servo myservo;

int pos = 0;

void setup() {

pinMode(2, INPUT);
myservo.attach(9);

}

void loop() {

  if (digitalRead(2) == LOW) {

    for (pos = 0; pos <= 180; pos += 1) {
      myservo.write(pos);
      delay(15);
    }

    for (pos = 180; pos >= 0; pos -= 1) {
      myservo.write(pos);
      delay(15);
    }
  }
  else {
    myservo.write(0);
    delay(15);
  }
}

, 👍0

Обсуждение

Предоставьте правильную схему и листинг., @Leon Heller

Что вы подразумеваете под «всегда включенным», он всегда в движении или всегда под напряжением?, @Jack Creasey

@TimWescott Почему бы просто не дать ФП возможность изменить вопрос, а не поспешно «закрывать» его. После закрытия вряд ли удастся получить голоса за повторное открытие, даже если оно будет изменено. На самом деле это просто «близкое» использование как форма издевательств., @Jack Creasey

Значительно упростите настройку. Уберите условие из кода и просто задайте постоянный угол. Затем попробуйте еще раз с другим. Поскольку вы снова усложняете свой эскиз, добавьте последовательное журналирование, чтобы объяснить, что он думает о своих действиях. И, конечно же, объясните **что именно происходит**., @Chris Stratton

Закрытие помешало бы написанию множества благонамеренных, но плохо информированных (без информации из ОП) ответов и их устареванию из-за обновлений вопроса и контекста., @Wesley Lee


1 ответ


1

Похоже, вам нужно включить подтягивающий резистор на D2. Как написано, D2 остается плавающим и, скорее всего, имеет низкое напряжение относительно земли. Включение подтягивающего резистора будет обеспечивать высокий уровень вывода, пока вы не щелкнете переключателем.

,

Входы Arduino имеют значительную емкость. Таким образом, после нажатия переключателя входной сигнал будет иметь тенденцию оставаться на низком уровне. Используйте либо pinMode(pin, INPUT_PULLUP), либо digitalWrite(pin, HIGH), чтобы включить подтягивание для (контакта), настроенного как INPUT., @Jack Creasey

оно работает!! Спасибо, @Anont Lamache