То, что у вас есть, называется Floating
булавкой. Выводы цифрового входа очень чувствительны к изменениям, и, если они не будут положительно переведены в то или иное состояние (высокое или низкое), они будут забирать паразитную емкость из близлежащих источников, таких как макеты, человеческие пальцы или даже воздух. Любой подключенный к нему провод будет действовать как маленькая антенна и вызывать изменение состояния входа. И я имею в виду любой провод, след на плате, провод к макету, контакт буфера, даже металлический штырь самой ИС.
Это указано на странице ссылок Arduino:
Если вывод не подключен ни к чему, digitalRead () может вернуть HIGH или LOW (и это может измениться случайно).
Если вы посмотрите на учебник по цифровой булавке Arduino :
Это также означает, однако, что входные контакты, к которым ничего не подключено, или с подключенными к ним проводами, которые не подключены к другим цепям, будут сообщать о случайных изменениях состояния контактов, улавливании электрических помех из окружающей среды или емкостной связи состояния соседней булавки.
Часто полезно привести входной контакт в известное состояние, если вход отсутствует. Это может быть сделано путем добавления подтягивающего резистора (до + 5 В) или понижающего резистора (резистор к земле) на входе, при этом 10K является общим значением. В микросхему Atmega встроены удобные подтягивающие резисторы 20К, доступ к которым можно получить из программного обеспечения. Эти встроенные подтягивающие резисторы доступны следующим образом.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Эти резисторы со слабым напряжением переводят состояние входного контакта в известное состояние и легко перезаписываются более сильными входными напряжениями, такими как прямое подключение к земле или + 5В.