tengo un problema con el hardware

hola, soy nuevo en: Arduino, Electronica y programacion (y que hago aca no?)

bueno he tenido 100 problemas solo para entender como funcionan los ejemplos (blink y pulsadores) y despues me di cuenta que tiene un comportamiento extraño que no llego a entender si es problema del arduino o del codigo.

bien lo que me pasa es que se activa el pin 13 (OUTPUT) cuando paso mi dedo (cable o cualquier cosa "conductora" medianamente cerca del PIN del arduino que marco como INPUT, el LED se enciende (cosa que deberia hacer si pusiera un boton y lo activara, pero se activa inmediatamente al pasar cerca del conector.

adjunto un video donde muestro lo que me pasa

https://youtu.be/3RkKFrwgN84

el codigo del ejemplo es:

void setup() { pinMode(13,OUTPUT); pinMode(3,INPUT); } void loop() { digitalWrite(13,digitalRead(3)); }

no he experimentado el problema con una perilla de luz

otros datos curiosos es que a medida que me acerco mas al conector el led se enciende con mas intensidad y a veces tarda unos segundos en apagarse cuando me alejo del conector.

no se si este post va aca si no pido mil disculpas

por lo demas muchas gracias por leerme :)

Lo recomendables es que actives la resistencia de Pull-Up del pin de entrada haciendo:

pinMode(3,INPUT_PULLUP);

De lo contrario el valor que leas cuando no conectas nada es indeterminado, no habia visto que sucediera lo del video me pareció curioso intenta con lo que te comento y comentas haber que paso

cuando llegue a mi casa me fijo

firius2010:
Lo recomendables es que actives la resistencia de Pull-Up del pin de entrada haciendo:

pinMode(3,INPUT_PULLUP);

De lo contrario el valor que leas cuando no conectas nada es indeterminado, no habia visto que sucediera lo del video me pareció curioso intenta con lo que te comento y comentas haber que paso

puede tener algo que ver con la corriente? conexion a tierra? un desperfecto?
cuando toco la chapa de metal del USB del arduino al principio se cancela el efecto, despues se ve que me cargo con la corriente yo y ya no funciona mas tocar la chapita

como lo puedo buscar en internet? es que ni siquiera entiendo que es lo que pasa

no me gusta molestar por los foros sin buscar. pero la verdad en este caso ni siquiera se por donde empezar.

muchas gracias por tu respuesta :stuck_out_tongue:

No entiendo que quieres buscar, simplemente es que no debes de asignar a un pin un valor inestable porque puede pasar lo que te sucede es decir que el pin reaccione de forma extraña, activa la resistencia de pull-up y si se te sigue presentando el problema ahí si toca revisar por algo anormal por ahora es solo que estas programando indebidamente.

firius2010: No entiendo que quieres buscar, simplemente es que no debes de asignar a un pin un valor inestable porque puede pasar lo que te sucede es decir que el pin reaccione de forma extraña, activa la resistencia de pull-up y si se te sigue presentando el problema ahí si toca revisar por algo anormal por ahora es solo que estas programando indebidamente.

al agregar el PULLUP el led queda permanentemente encendido sin importarle nada

cambio el codigo a:

const int btn=3; void setup() {

pinMode(13,OUTPUT); pinMode(btn,INPUT_PULLUP); digitalWrite(13,LOW); delay(1000); }

void loop() {

if (digitalRead(btn) == HIGH) digitalWrite(13,HIGH); else digitalWrite(13,LOW); }

y sigue encendido (si retiro el PULLUP con ese codigo sigue actuando extraño al acercarme al pin)

puede ser que se cierre el circuito (entre el PIN y algun GRN) por algun "campo magnetico" u estatica o algo? al pasar cerca de la placa?

por ahora es solo que estas programando indebidamente.

como harías el codigo vos? porque es lo mas simple del mundo

Prueba solamente con el pin conectado a 10k a masa (GND) y luego acercate al pin a ver si hace cosas raras. Luego conecta el pulsador con un contacto a ese pin y el otro a 5V. Y luego me dices si sigue disparándose.

surbyte: Prueba solamente con el pin conectado a 10k a masa (GND) y luego acercate al pin a ver si hace cosas raras. Luego conecta el pulsador con un contacto a ese pin y el otro a 5V. Y luego me dices si sigue disparándose.

bien, no se si entendi bien conecto la resistencia al pin 3 (INPUT) y al ground y bueno... funcinoa(?) o mejor dicho el led no se vuelve a encender. pero pierdo la funcionalidad de INPUT al hacer eso. se supone que debe conectarse al positivo verdad? para que al precionar un boton se cierre el circuito y sirva para algo

estoy equivocado? como arreglaria eso mi problema?

muchas gracias por responder! :)

si has conectado una resistencia a GND si, el pulsador tiene que ir conectado al positivo.

Prueba solamente con el pin conectado a 10k a masa (GND) y luego acercate al pin a ver si hace cosas raras.
Luego conecta el pulsador con un contacto a ese pin y el otro a 5V.


Esto fue lo que te dije que hicieras.
Y como crees que vas a perder la funcionalidad?
Claro que debes modificar la definición de como será el pin3, no será INPUT_PULLUP sino

const int btn=3;
void setup() {
    pinMode(13,OUTPUT);
    pinMode(btn,INPUT);
    digitalWrite(13,LOW);
    delay(1000);
}

void loop() {

  if (digitalRead(btn) == HIGH) 
      digitalWrite(13,HIGH);
    else 
       digitalWrite(13,LOW);
}

Cuando defines un pin digital tan solo como entrada debes asegurar que tenga un valor logico conectado a su entrada siempre, es decir o que lea 0V o que lea 5V si lo dejas al aire el valor que leas por el estará indeterminado y sera incierto, en vista de eso se utilizan las resistencias sean de pull-up o de pull-down googlea un poco eso para que te enteres un poco mas de que tratan, el objetivo de ellas es que cuando sueltes el interruptor y la señal que estas llevando al pin ya no pase, el pin quede con un valor y no al aire.

Si es de pull-down en reposo el pin tendra un valor asegurado de 0V por lo tanto solo tienes que colocar un switch o pulsador a Vcc por lo contrario si es de pull-up pones el switch o pulsador a Gnd, el arduino (o mejor dicho el microcontrolador que tiene arduino) posee internamente unas resistencias de pull-up que puedes activar desde el programa y asi te evitas el embrollo de poner resistencias externas (aunque tampoco es mucho problema) esas resistencias son las que activas si haces

pinMode(3,INPUT_PULLUP);

(en ese ejemplo activaste la del pin 3) asi solo tienes que conectar el pulsador entre la entrada el pin que estes manejando y tierra cuando lo sueltes como es de pull-up se mantendra el led prendido cuando lo hundas llegaras con tierra y se apagara, existen muchos tutoriales y guias yo de vos cogeria un libro que explique arduino desde 0 y haría los ejemplos.

Lo que me causo mucha curiosidad es que cuando lo tienes sin resistencia de pull-up o pull-down al acercar la mano se comporte como un PWM ya que se ve como varia la intensidad, yo por curiosear lo hice con mi mega y mi due pero nada paso, eso me parecio curioso a Surbyte o a GO_zalo se les ocurre ¿por que?

surbyte:

Esto fue lo que te dije que hicieras.
Y como crees que vas a perder la funcionalidad?
Claro que debes modificar la definición de como será el pin3, no será INPUT_PULLUP sino

const int btn=3;

void setup() {
pinMode(13,OUTPUT);
pinMode(btn,INPUT);
digitalWrite(13,LOW);
delay(1000);
}

void loop() {

if (digitalRead(btn) == HIGH)
digitalWrite(13,HIGH);
else
digitalWrite(13,LOW);
}

muchas gracias por tomarte el tiempo de responder… no hice lo que dijiste porque no lo entendi XD (asi que no importa el resto de las preguntas) toca probar de nuevo de esa forma que tiene muchisimo mas sentido que lo que hice.
muchas gracias otra vez!

firius2010:
Cuando defines un pin digital tan solo como entrada debes asegurar que tenga un valor logico conectado a su entrada siempre, es decir o que lea 0V o que lea 5V si lo dejas al aire el valor que leas por el estará indeterminado y sera incierto, en vista de eso se utilizan las resistencias sean de pull-up o de pull-down googlea un poco eso para que te enteres un poco mas de que tratan, el objetivo de ellas es que cuando sueltes el interruptor y la señal que estas llevando al pin ya no pase, el pin quede con un valor y no al aire.

Si es de pull-down en reposo el pin tendra un valor asegurado de 0V por lo tanto solo tienes que colocar un switch o pulsador a Vcc por lo contrario si es de pull-up pones el switch o pulsador a Gnd, el arduino (o mejor dicho el microcontrolador que tiene arduino) posee internamente unas resistencias de pull-up que puedes activar desde el programa y asi te evitas el embrollo de poner resistencias externas (aunque tampoco es mucho problema) esas resistencias son las que activas si haces

pinMode(3,INPUT_PULLUP);

(en ese ejemplo activaste la del pin 3) asi solo tienes que conectar el pulsador entre la entrada el pin que estes manejando y tierra cuando lo sueltes como es de pull-up se mantendra el led prendido cuando lo hundas llegaras con tierra y se apagara, existen muchos tutoriales y guias yo de vos cogeria un libro que explique arduino desde 0 y haría los ejemplos.

Lo que me causo mucha curiosidad es que cuando lo tienes sin resistencia de pull-up o pull-down al acercar la mano se comporte como un PWM ya que se ve como varia la intensidad, yo por curiosear lo hice con mi mega y mi due pero nada paso, eso me parecio curioso a Surbyte o a GO_zalo se les ocurre ¿por que?

es exactamente eso! me llama la atencion que detecte la proximidad… pero tambien varia la intencidad. otra cosa que detecte es que cuando queda permanentemente encendido y toco el pulsador que deberia activar por codigo el verdadero encendido del LED éste se prende con un poco mas de intencidad

por otro lado tu explicacion de los PULLUP y PULLDOWN tiene mucho sentido y desconocía su existencia porque nunca lo vi en ningun ejemplo, lo tendre en cuenta para ver si resuelve el problema

todo esto puede ser causado por una mala conexion a tierra de la casa?
me queda probar si es un mal funcionamiento de mi puerto USB, pero no tengo otra fuente de alimentacion por ahora

lo importante de todo esto es que no estoy loco y alguien mas cree que es extraño lo que me pasa <3

muchas gracias a todos!

Tengo el mismo que Pattokun. Tengo un semáforo para arrancones y tengo la condicionante que hasta presionar un interruptor inicie la secuencia de arranque. Después de detectar la falla supe que solo por tener un cable conectado al pin de entrada me inicia la secuencia, aunque no tenga ningún voltaje ni pulso. Al quitar el cable la secuencia queda detenida, pero al poner el puro cable vuelve a iniciar. Tengo la idea que puede ser alguna señal electromagnética que este recibiendo el cable. No se si a alguien mas le pasa esto.

La última respuesta fue el 03-03-2016, 07:51:15. O sea que el hilo tiene mas de 120 días por lo que ignoraste la advertencia que te daba antes de postear en letras rojas Warning: No resondas hilos viejos. Ve y crea tu propio hilo poniendo un título acorde con el mismo. Lee las normas del foro, y describe bien tu problema con esquemas y código en tu nuevo hilo.