Коли в цій конфігурації підключена кнопка, вхід називається плаваючим , тобто це не 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-ти кілометровий резистор на цьому штирі. Коли кнопка не натиснута, вхід більше не буде плавати.
Примітка. Це працює лише тоді, коли інший кінець підключений до землі.