Cómo combatir la carga estática / electromagnética constante en Arduino (attachInterrupt)

1

Tengo cables cortos con el botón adjunto al pin 2 y tierra. Sin embargo, incluso sin tocar nada, el led se alterna muchas veces por minuto. Debido a eso (supongo) está reaccionando a mi botón presionando muy aleatoriamente. Parece que la carga constante en los cables está interfiriendo con la presión real del botón y actúa como una antena. He probado diferentes tableros de Arduino UNO, los mismos resultados, por lo que el tablero no es defectuoso.

int pin = 9;
volatile boolean state = LOW;

void setup()
{
  attachInterrupt(0, blink, CHANGE);
  pinMode(pin, OUTPUT);
}

void loop()
{
  digitalWrite(pin, state);

  delay(1000);// for debug purposes
}

void blink()
{
  if (state ==LOW)
  { 
    state=HIGH;
  } 
  else
  {
    state=LOW;
  } 

}

Apreciaré si alguien puede recomendar una solución de hardware para esto.

    
pregunta Pablo

1 respuesta

5

El problema se produce debido a que las entradas de Arduino están en estado de alta impedancia de forma predeterminada. En efecto, son sensores capacitivos.

Debe habilitar la recuperación en el pin que está utilizando como entrada:

  

pinMode (2, ENTRADA);
  escritura digital (2, ALTA); // Habilitar la resistencia de pull-up interna de 20 kOhm para este pin

Si esto no se hace, aunque los pines no están predeterminados en las entradas, flotan, como ha descubierto.

No es necesario realizar otros cambios, y ciertamente no se necesitan cambios de hardware.

    
respondido por el Anindo Ghosh

Lea otras preguntas en las etiquetas