Lo que tienes se llama Floating
pin. Los pines de entrada digital son muy sensibles al cambio y, a menos que se conduzcan positivamente a un estado u otro (alto o bajo), captarán la capacitancia de fuentes cercanas, como tableros, dedos humanos o incluso el aire. Cualquier cable conectado a él actuará como una pequeña antena y hará que cambie el estado de entrada. Y me refiero a cualquier cable, la traza en el tablero, el cable a la placa de pruebas, el pasador de la placa de pruebas, incluso el pasador de metal del propio IC.
Esto se menciona en la página de referencia de Arduino:
Si el pin no está conectado a nada, digitalRead () puede devolver ALTO o BAJO (y esto puede cambiar al azar).
Si observa el Tutorial de pin digital Arduino :
Esto también significa, sin embargo, que los pines de entrada sin nada conectado a ellos, o con cables conectados a ellos que no están conectados a otros circuitos, informarán cambios aparentemente aleatorios en el estado de los pines, captando ruido eléctrico del entorno, o capacitivamente Acoplando el estado de un pin cercano.
A menudo es útil dirigir un pin de entrada a un estado conocido si no hay una entrada presente. Esto se puede hacer agregando una resistencia pullup (a + 5V), o una resistencia desplegable (resistencia a tierra) en la entrada, con 10K como valor común.
También hay convenientes resistencias pull-up de 20K incorporadas en el chip Atmega a las que se puede acceder desde el software. Se accede a estas resistencias de extracción incorporadas de la siguiente manera.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Estas resistencias de tracción débil forzan el estado del pin de entrada a un estado conocido y se sobrescriben fácilmente con voltajes de entrada más fuertes, como una conexión directa a tierra o + 5v.