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:
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:
De las 4 terminales, se forman dos pares conectados entre sí, de modo que en realidad pueden verse como si solo tuvieran 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 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.
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)