sábado, 3 de septiembre de 2022

Interruptores con Arduino

 Manejo de interruptores de entrada en Arduino


Dr. Héctor Darío Aguirre Arvizu
22-09-01

Es importante conectar el mundo externo al interno del Arduino y lo más sencillo es por medio de interruptores, los cuáles permanecen abiertos o cerrados y, al ser activados, pasan a la posición contraria, o se cierran o se abren, respectivamente.

Podemos trabajar con interruptores de palanca o de botón, para este caso es indistinto.

Lo importante es que un interruptor no se puede conectar de modo directo a cualquier terminal, sino que debe mediar un resistor que, por un lado, permite polarizar adecuadamente la terminal programada como entrada y limita la corriente que se consume por parte del circuito, así como la corriente que entra a la tarjeta propiamente.

Hay dos configuraciones o circuitos adecuados, uno es el llamado pull-up y el otro el pull-down.

En la primera opción conectamos un resistor, de entre 4.7K hasta 15K, a la entrada del Arduino y de allí al voltaje positivo +5 V. Se aprecia el circuito en el siguiente diagrama.

Esta forma de conectar protege la terminal del Arduino de conectarla directamente a los 5 V. Se usa para cuando queremos mantener una lectura de HIGH en la entrada, pero que cambiará a LOW cuando se cierre el interruptor. La corriente pasará por el resistor siendo mínima la que se manejara en la entrada, protegiendo sus transistores de salida.

La segunda opción de conexión es pull-down o de conexión a negativo. Se utiliza para cuando se quiere dar a leer en el Arduino un estado LOW durante mucho tiempo, mismo que cambiará a HIGH al cerrar el interruptor. La conexión es la siguiente:
Aquí te ponemos el programa para verificar el funcionamiento de estos interruptores. 

Inicio del programa:
//LECTOR DE INTERRUPTORES

  int interrEntrada1 = 0;

  int interrEntrada2 = 0;
 
void setup() {
                          // inicializa el pin digital 12 como una Entrada y el 4 como Salida.
  pinMode(4, OUTPUT);
  pinMode(12, INPUT);
  
  pinMode(3, OUTPUT);     // la terminal 11 pasa a ser Entrada y la 4 Salida
  pinMode(11, INPUT);
  
  int interrEntrada1 = 0;

  int interrEntrada2 = 0;
  
}

void loop() {
 
  if (interrEntrada1 == HIGH) {
    
  digitalWrite(4, HIGH);            // Hace destellar el LED indicando que el interruptor está abierto
  delay(25);                        // durante 25 miliseguntos con un tiempo de espera de medio segundo.
  digitalWrite(4, LOW);             
  delay(500);                       

}
  else {
  digitalWrite(4, HIGH);    // Enciende el LED cuando lee que la Entrada pasó a LOW.
  delay(500);
  digitalWrite(4, LOW);     // Esta instrucción "else" permanecerá activa con el LED encendido mientras
                            // el interruptor permanezca cerrado.
     }
     
/*
  interrEntrada2 = digitalRead(11);
  
  if (interrEntrada2 == LOW) {

  digitalWrite(3, HIGH);            // Hace destellar el LED indicando que el interruptor está abierto
  delay(25);                        // durante 25 miliseguntos con un tiempo de espera de medio segundo.
  digitalWrite(3, LOW);             
  delay(500); 

}
  else {
  digitalWrite(3, HIGH);   // Enciende el LED indicando que se ha activado el interruptor.
  delay(500);
  digitalWrite(3, LOW);
     }
/*
}
Fin del programa.

Te recomendamos además ver el video para que notes cómo hicimos la prueba en un circuito real.



Esperemos sea de tu agrado.

D. R. 2022 Darío Aguirre

No hay comentarios:

Publicar un comentario