Interruptores

Hasta el momento en este curso se han hecho ejercicios con Arduino que involucran salidas únicamente, es momento de probar con las entradas digitales. Una forma fácil de lograrlo es con un interruptor, hay de diferentes tipos pero se puede probar con algún microswitch, ya que son fáciles de conseguir y se facilita el ser utilizados en una protoboard:

botones_al_aire boton_al_aire

A continuación una pequeña descripción de estos microswitch, que se pueden conseguir en su electrónica de confianza por apenas unos 3 ó 4 pesos. La versión de cuatro terminales tiene el espaciado adecuado para colocarse en una protoboard al igual que un circuito integrado pasando dos terminales de un lado de la protoboard y las otras dos terminales del otro lado:

boton_proto

De las 4 terminales, se forman dos pares conectados entre sí, de modo que en realidad pueden verse como si solo tuvieran dos terminales:

descripcion_botones

Se tienen dos terminales de un lado del microswitch (abajo) y otras dos del lado opuesto (arriba), como se puede apreciar en la imagen anterior, hay conexión directa entre las terminales del lado izquierdo (la de arriba con la de abajo) y del lado derecho. Esto quiere decir que el interruptor se encuentra entre las terminales izquierda y derecha.
boton
La conexión con la tarjeta Arduino se realiza de modo que al presionar el microswitch se obtenga un ALTO (5V) y al liberarlo un BAJO (GND). Para ello, se coloca una terminal del microswitch a 5V del Arduino mientras que la otra terminal a una entrada digital, por ejemplo la 2. Con esta parte se logrará una señal en ALTO al presionar el interruptor pero al liberarlo no se obtendría nada, quedaría al aire. Para obtener un GND al liberar el microswitch se coloca una resistencia a tierra del lado de la terminal que va a la entrada digital del Arduino como se muestra en la figura de arriba. La resistencia se recomienda de unos 10k.

Ahora una pausa a la parte del hardware y sigue el software. Se puede declarar una variable donde se especifique el pin donde va a estar conectado el interruptor:

int pinBoton = 2;

Luego, se le dice al Arduino que ese pin lo considere como una entrada digital, para eso en la sección Setup se establece:

pinMode(pinBoton, INPUT);

Para leer el estado del botón se utiliza la función digitalRead:

digitalRead(pinBoton);

Esta función regresa un HIGH o LOW, que se puede guardar en una variable:

resultado = digitalRead(pinBoton);

La lectura del botón se tiene que realizar constantemente, por eso se coloca esta instrucción dentro de la rutina loop.

Dependiendo el resultado del botón, se pueden realizar un sin número de acciones, por ejemplo encender un LED si se presiona el interruptor y apagarlo cuando se libere. La sentencia “IF” puede ser útil y considerando ejercicios anteriores podemos lograr:

if(resultado == HIGH)
{
  digitalWrite(pinLED,HIGH);
}
else
{
  digitalWrite(pinLED,LOW);
}

La variable resultado se puede definir al principio del programa como:

int resultado = 0;

Arduino:

int pinBoton = 2;
int pinLED = 13;

int resultado = 0;

void setup() {
  pinMode(pinBoton, INPUT);
  pinMode(pinLED,OUTPUT);
}

void loop() {
  
  resultado = digitalRead(pinBoton);
  
  if(resultado == HIGH)
  {
    digitalWrite(pinLED,HIGH);
  }
  else
  {
    digitalWrite(pinLED,LOW);
  }
}

Cuando se presione el botón, se encenderá el LED conectado al pin 12.

Se puede ver un ejemplo similar en:

Archivo->Ejemplos->02.Digital->Button

Ejercicios:

4B: Intentar que el LED se encienda y apague 5 veces al presionar una sola vez el botón.

4C: Agregar una nueva variable y utilizarla como contador, de modo que se muestre en pantalla el número de veces que se ha presionado el botón:
“El botón se ha presionado 5 veces”

4D: Agregar un segundo botón y al presionar uno se encienda 5 veces un LED y se incremente el contador, al presionar el segundo botón, encender 3 veces el LED y decrementar el contador. El contador no debe ser menor a cero.

(576)

Acerca de jfvilla

Juan Francisco Villa Medina es ingeniero en Sistemas Computacionales (graduado con mención honorífica), en 2013 obtuvo el grado de Maestro en Sistemas Computacionales (graduado con mención honorífica), en 2021 obtuvo el grado de Doctor en Ciencias por el Instituto Politécnico Nacional (IPN), es Profesor-Investigador en la Universidad Autónoma de Baja California Sur (UABCS). Trabaja también en el Centro de Investigaciones Biológicas del Noroeste (CIBNOR), donde es desarrollador de software y circuitos electrónicos enfocado en vehículos autónomos. Cuenta con diversas publicaciones científicas y ha sido asesor de estudiantes en diversos eventos de tecnología a nivel nacional. También es co-fundador de 7robot, una empresa de tecnología enfocada a la robótica y automatización.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *