Те, що у вас є, називається Floating
шпилькою. Цифрові штифти введення дуже чутливі до змін, і, якщо вони не будуть приведені до того чи іншого стану (високий або низький), вони підберуть заблоковану ємність з сусідніх джерел, наприклад, дощок, людських пальців або навіть повітря. Будь-який провід, підключений до нього, буде діяти як маленька антена і призведе до зміни стану входу. І я маю на увазі будь-який дріт, слід на дошці, дріт до макетної дошки, штифтову дошку, навіть металевий штифт самої СК.
Про це йдеться на довідковій сторінці Arduino:
Якщо штифт не підключений ні до чого, digitalRead () може повернути або ВИСОК, або НИЗКО (і це може змінитися випадковим чином).
Якщо ви подивитесь на підручник з цифрових контактів Arduino :
Це також означає, що вхідні штифти, що не підключаються до них, або з проводами, підключеними до них, які не підключені до інших мікросхем, повідомлять, здавалося б, про випадкові зміни в стані штифта, піднімаючи електричний шум від навколишнього середовища або ємнісно з'єднуючи стан шпильки поблизу.
Часто корисно керувати вхідним штифтом до відомого стану, якщо немає вводу. Це можна зробити, додавши на вході резистор підтягування (до + 5 В) або резистор, що випадає (резистор на землю), при цьому 10 К є загальним значенням. Також є зручні 20K підтягувальні резистори, вбудовані в мікросхему Atmega, до яких можна отримати доступ із програмного забезпечення. До таких вбудованих резисторів, що вбудовуються, доступний наступним чином.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Ці слабкі витяжні резистори змушують стан вхідного штифта у відомий стан і легко перезаписуються більш сильними вхідними напругами, як-от пряме з'єднання із землею або + 5В.