SDII - ITC - UABCS
4 - Interruptores
Hasta el momento hemos hecho ejercicios con nuestro 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 podríamos probar con algún microswitch, ya que son fáciles de conseguir y se prestan para ser utilizados en una protoboard:


Vamos a ver una pequeña descripción de estos microswitch, que no es por hacer promoción pero los consiguen en su electrónica de confianza por apenas unos 3 ó 4 pesos. La versión de cuatro patitas (3 pesos) 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 de la mitad:

De las 4 terminales, se forman dos pares conectados entre sí, de modo que en realidad podemos verlo como si solo tuvieramos dos terminales:


Se tienen dos terminales de un lado del microswitch (abajo) y otras dos del lado opuesto (arriba), como se puede apreciar en la imagen de la derecha, 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 lo encontramos entre las terminales izquierda y derecha.

La conexión con nuestro Arduino la realizaremos de modo que al presionar el microswitch se obtenga un ALTO (5V) y al liberarlo un BAJO (GND). Para ello, colocaremos una terminal del microswitch a los 5V del Arduino mientras que la otra a una entrada del Arduino, 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 vamos a colocar 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.
Descansemos ahora de la parte del hardware y vamos al software. Se puede declarar una variable donde especifiquemos el pin donde va a estar conectado el interruptor:
int pinBoton = 2;
Luego, debemos decirle al Arduino que ese pin lo considere como una entrada digital, para eso en la sección Setup ponemos:
pinMode(pinBoton, INPUT);
Para leer el estado del botón utilizaremos la función digitalRead:
digitalRead(pinBoton);
Esta función nos regresa un HIGH o LOW, la podemos guardar en una variable:
resultado = digitalRead(pinBoton);
La lectura del botón se tiene que estar realizando constantemente, para eso ponemos 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. Nos podemos ayudar con la sentencia "IF" y de los ejercicios anteriores:
if(resultado == HIGH)
{
digitalWrite(pinLed,HIGH);
}
else
{
digitalWrite(pinLed,LOW);
}
La variable resultado la podemos definir al principio del programa como:
int resultado = 0;
Arduino:
int pinBoton = 2;
int pinLED = 12;
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 mostremos 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.