Когда кнопка подключена в этой конфигурации, вход - это то, что называется плавающим , то есть это не 0 или 1. Когда кнопка нажата, она подключена к земле, так что это определенно 0, но когда она не нажата, мы не знаем значение булавки.
Подтягивающий резистор
Нам нужно включить так называемый «подтягивающий» резистор, чтобы подтянуть сигнал до логической 1, когда кнопка не нажата.
Изображение из Sparkfun
Это означает, что когда кнопка не нажата, Arduino считывает логику 1. Когда кнопка нажата, ток проходит через резистор на землю, а Arduino считывает логику 0.
Внутренний подтягивающий резистор
Arduino также имеет внутренние подтягивающие резисторы, поэтому вам не обязательно добавлять дополнительный компонент в вашу схему. Есть несколько способов использовать это.
Раньше вы делали это так:
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Теперь мы можем сделать это просто в одну строку:
pinMode(pin, INPUT_PULLUP);
Это позволяет подтянуть резистор 20 кОм на этом выводе. Вход больше не будет плавающим, когда кнопка не нажата.
Примечание. Это работает только тогда, когда другой конец заземлен.