Входной сигнал сильно колеблется
Я пытаюсь прочитать ввод с переключателя, но вместо 0 и 1 для замкнут/разомкнут я получаю 0 и быструю серию 1 и 0. Первоначально я пытался (и не смог) просто прочитать поворотный энкодер, но когда я заменяю его на стандартный кулисный переключатель или даже подключаю провода напрямую, все то же самое.
Я впервые пытаюсь ввести данные в Arduino, поэтому я, вероятно, упустил что-то довольно простое.
У меня есть заземление на один контакт коммутатора и контакт 2 на другой. Вот код, который я использую, чтобы узнать, включен переключатель или выключен.
void setup() {
pinMode (2, INPUT);
Serial.begin(9600);
}
void loop() {
Serial.println(digitalRead(2));
}
@WillM, 👍3
Обсуждение1 ответ
Выводы, сконфигурированные как ВХОД, имеют высокий импеданс и очень чувствительны к электрическим помехам из окружающей среды, особенно к подключенным к ним проводам Смотреть учебник по Arduino
Попробуйте использовать INPUT_PULLUP в операторе pinMode.
Кроме того, вы можете изучить методы устранения дребезга коммутатора, когда ваш коммутатор работает.
Да PULLUP решил это, спасибо!!, @WillM
- Как узнать сопротивление внутреннего подтягивающего резистора?
- digitalRead не читает входной контакт ESP8266-01
- Как подключить трехконтактный переключатель включения-выключения для считывания входных данных?
- Невозможно использовать аналоговые контакты в качестве цифровых входов
- Использование вывода светодиода для ввода
- Что происходит, когда digitalWrite(pinname, LOW) вызывается после pinMode(pinname, INPUT_PULLUP)?
- Как закодировать Arduino для выполнения определенного кода с помощью ползункового переключателя
- Arduino изменяя выход основанный на напряжении тока провода
В дополнение к ответу @ Bra1n, такого рода проблемы также обычно можно решить, заземлив коммутатор через резистор., @KarlKastor