Входной сигнал сильно колеблется

switch input pull-up

Я пытаюсь прочитать ввод с переключателя, но вместо 0 и 1 для замкнут/разомкнут я получаю 0 и быструю серию 1 и 0. Первоначально я пытался (и не смог) просто прочитать поворотный энкодер, но когда я заменяю его на стандартный кулисный переключатель или даже подключаю провода напрямую, все то же самое.

Я впервые пытаюсь ввести данные в Arduino, поэтому я, вероятно, упустил что-то довольно простое.

У меня есть заземление на один контакт коммутатора и контакт 2 на другой. Вот код, который я использую, чтобы узнать, включен переключатель или выключен.

void setup() {
  pinMode (2, INPUT);
  Serial.begin(9600);
}

void loop() {
 Serial.println(digitalRead(2));
}

, 👍3

Обсуждение

В дополнение к ответу @ Bra1n, такого рода проблемы также обычно можно решить, заземлив коммутатор через резистор., @KarlKastor


1 ответ


9

Выводы, сконфигурированные как ВХОД, имеют высокий импеданс и очень чувствительны к электрическим помехам из окружающей среды, особенно к подключенным к ним проводам Смотреть учебник по Arduino

Попробуйте использовать INPUT_PULLUP в операторе pinMode.

Кроме того, вы можете изучить методы устранения дребезга коммутатора, когда ваш коммутатор работает.

,

Да PULLUP решил это, спасибо!!, @WillM