O que você tem é chamado de Floating
alfinete. Os pinos de entrada digital são muito sensíveis à mudança e, a menos que sejam direcionados positivamente para um estado ou outro (Alto ou Baixo), captarão a capacitância perdida de fontes próximas, como tábuas de pão, dedos humanos ou até o ar. Qualquer fio conectado a ele funcionará como uma pequena antena e fará com que o estado de entrada mude. E quero dizer qualquer fio, o traço na placa, o fio na placa de ensaio, o pino da placa de ensaio, até o pino de metal do próprio CI.
Isso é consultado na página de referência do Arduino:
Se o pino não estiver conectado a nada, digitalRead () pode retornar HIGH ou LOW (e isso pode mudar aleatoriamente).
Se você olhar para o Tutorial do Arduino Digital Pin :
Isso também significa, no entanto, que pinos de entrada sem nada conectado a eles ou com fios conectados a eles que não estão conectados a outros circuitos, relatarão alterações aparentemente aleatórias no estado do pino, captando ruído elétrico do ambiente ou acoplando capacitivamente o estado de um alfinete próximo.
Frequentemente, é útil direcionar um pino de entrada para um estado conhecido, se nenhuma entrada estiver presente. Isso pode ser feito adicionando um resistor de pull-up (a + 5V) ou um resistor de pulldown (resistor ao terra) na entrada, com 10K sendo um valor comum. Também existem resistores de pull-up de 20K, integrados ao chip Atmega, que podem ser acessados por software. Esses resistores de pull-up embutidos são acessados da seguinte maneira.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Esses resistores de tração fracos forçam o estado do pino de entrada a um estado conhecido e são facilmente substituídos por tensões de entrada mais fortes, como uma conexão direta ao terra ou + 5v.