Arduino detecta señal con solo conectarle un cable.

Hola a todos, les traigo un problema para saber si a alguno le ha pasado lo mismo. El problema es este, cada vez que configuro un pin como INPUT, este una vez que cargo el programa permanece permanente como HIGH sin importar si recibe o no señal, tan solo basta con que le conecte un cable (solo el cable sin ningun voltaje de ningún tipo). Les pongo un ejemplo corto para que se entienda, supongamos el típico programa para encender el led con un botón, para asi a fines practicos mostrar el problema:

void setup() {

pinMode(2,INPUT);
pinMode(3,OUTPUT);

}

void loop() {
if (digitalRead(2)==HIGH)
{
digitalWrite(3,HIGH);
}
else
{
digitalWrite(3,LOW);
}
}

en este caso el led se encendería sin necesidad de precionar el botón, es mas, si le quito la alimentación al circuito del botón el led seguiria encendido, peor aun si desconecto el pin 2 del circuito, pero dejándole el cable conectado, lo sigue tomando como HIGH. solo quitando el cable del pin apagara el led.

He hecho mediciones con el multímetro, y noto que mientras esta conectado el cable al pin 2, en este ejemplo (pero la realidad es que es a cualquier pin que configure como INPUT), Arduino envia voltaje a aquellos pins OUTPUT relacionados según el código cargado, pero en menor voltaje, cuando le envio voltaje a dichos INPUT, los OUTPUT mandan 5v.

Algo mas loco aun, si toco la placa o incluso acerco mi mano, enciende el led L sin importar que código este cargado, si utilizo el código del ejemplo, tambien enciende el led, sin conectar nada al pin de input.

Hi,
Normalmente si el input no tiene pullup externo entonce tienes que configurar el pin como INPUT_PULLUP esto le anade la resistencia de pullup internamente. Segundo tienes conectado el switch con un lado conectado al pin de entrada del arduino y el otro lado va a ground.

O usas lo sugerido por tauro omle agregas a tu entrada un resistor de 4.7k o 10k entre el pin y gnd de esre modo

1 Like