10.1 Objetivo General:
Encender un LED utilizando un botón pulsador, luego apagar el LED utilizando el mismo botón pulsador.
NUEVO
Nueva práctica sobre encender una serie de LEDs tipo estrella fugaz, ver Práctica 13.
10.2 Materiales y Métodos:
- Un LED.
- Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.
- Un cable USB impresora.
- Un computador.
- Cables para el montaje del circuito.
- Tarjeta Protoboard.
- Una Resistencia Eléctrica de 220 ohm.
- Un Botón Pulsador.
En la práctica 2 el LED se encendía al presionar el botón, pero si se soltaba el botón el LED se apagaba. En esta práctica se quiere utilizar el botón para que encienda el LED y este se quede encendido a pesar de que se deje de presionar el botón. Luego si se quiere apagar el LED, el código debe dar la posibilidad de al oprimir el mismo botón, el LED se apague. Note que el circuito es el mismo que el de la práctica 2. El código de esta práctica puede ser utilizado en general para inicializar código a ejecutar por Arduino. Por ejemplo, si se diseña un robot móvil seguidor de línea, el código puede ser empleado para activar el funcionamiento del robot.
10.3 Montaje de la práctica:
Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito en el programa Fritzing. Se debe tener en cuenta el conocimiento de cuál es el cátodo y ánodo del LED. Se coloca el ánodo en el pin 13 y el cátodo a tierra (ground), usar el pin 5V y conectar al botón como se muestra en la figura 2:
Figura 2. Montaje del circuito en el programa Fritzing
Se observa en la Figura 2 que se está utilizando el Arduino Uno, si se utiliza la tarjeta Arduino Uno-R3 el mismo procedimiento. Como se observa en la Figura 2, el Protoboard nos ayuda a insertar el LED e instalar el circuito a través de cables, al igual que la resistencia eléctrica y el botón pulsador. La línea que esta de color rojo que conecta el LED a la tarjeta Arduino emite los 5V al estar conectado la tarjeta al computador (El computador es capaz de proveerle Arduino 5V). Los 5V como se observa van hacia al botón y luego al cerrarse el circuito le deja pasar al pin 7. Para proteger el circuito y evitar que al pin 7 no le llegue más de 5V, le colocamos al circuito una resistencia eléctrica, la cual llevara en gran parte de esa señal a tierra.
Luego que tengamos armado el circuito en el programa Fritzing, se comienza con el desarrollo del programa en el IDE de Arduino.
10.3 IDE de Arduino para la práctica:
– Se selecciona la tarjeta Arduino que se esta utilizando sea Arduino Uno-R3 o Arduino Mega 2560.
– Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el computador.
– Se empieza a realizar el código:
- Inicialmente debemos darle un nombre de qué consiste el codigo, esto se hace a través del símbolo //, se puede colocar el título de la práctica o del programa en sí. También se puede utilizar como comentarios dentro del programa.
- Se declaran las variables. En la práctica se declaran de tipo constante, una variable que no cambiara durante el desarrollo del programa, su comando es const, además se debe especificar qué tipo de datos se almacenará en la constante, en este caso será entero y su comando es int, luego se le da el nombre de la variable; en la tarjeta Arduino se coloca el ánodo en el pin 13, la variable se le asignara el valor de 13. También se declara la variable botón en el pin 7 y una variable entero val igual a cero (0), la diferencia de las demás variables es que la variable val no será constante va a variar entre 0 y 1, en función de si el botón está presionado o no.
- Se define si la variable declarada son de tipo entrada o de salida, para eso se utiliza el comando void setup (), se abre corchete ({) para saber qué es lo que contiene ese comando y al finalizar el comando se cierra corchete (}). Internamente del corchete se declara que la variable LED es de salida, esto se realiza a través del comando pinMode, este a su vez necesita como argumento la variable y el tipo de señal de la misma, es decir pinMode(LED,OUTPUT); en la que OUTPUT indica que la señal saldrá del pin 13 permitiendo encender el LED. Para definir el botón pulsador lo importante es definir el pin donde está conectado el boton (pin 7), este se define en la programación en vez de ser un OUTPUT es un INTPUT, cada vez que el reciba en ese INPUT él va a tomar una acción; la cual es decirle Arduino que tome una señal digital en el pin 13 y encienda el LED, su comando será pinMode(BONTON,INPUT).
- Luego de definir las variables, se procede a realizar la estructura del código a través del comando void loop (), de igual manera se abre corchete({) y se cierra (}) luego de terminar su cumplimiento. Internamente del corchete se establecen las instrucciones que ejecutara Arduino continuamente. Se utilizara la variable val la cual leerá digitalmente lo que sucede en el pin 7 (botón), su comando seria digitalRead(BOTON). La práctica permite introducir otra estructura de programación la cual es if, la que significa si en español. La estructura if es un condicional que permite decidir en función del valor de la variable val, si este es alto (HIGH=1) o si es bajo (LOW=0). Se utiliza una variable estado (state) que registrará los cambios de HIGH y LOW cuando se pulsa el botón de esta manera se crea un suiche de encendido que luego al volver a presionar sirve para apagar lo que esté dentro del if que contenga la variable state.
- Para que el LED se encienda, si state==1 se utiliza el comando digitalWrite(LED,HIGH). Para quel LED pueda apagarse se utiliza el mismo comando digitalWrite pero indicándole esta vez una señal baja LOW, esto cuando el state esté en 0.
- Al terminar el desarrollo del programa se debe compilar para verificar si existen errores dentro del codificado. Luego si no existen errores se debe cargar el código en la tarjeta Arduino para que lo ejecute.
NOTA: Para quel IDE de Arduino pueda entender los comandos es necesario que al final de cada instrucción se coloque punto y coma (;).
En la siguiente imagen se mostrara como quedo plasmado en el IDE de Arduino, los procedimientos anteriormente señalados:
// Práctica encender LED con botón pulsador y luego apagar LED con el mismo
//boton pulsador
const int LED =13;
const int BOTON = 7;
int val = 0; //val se emplea para almacenar el estado del boton
int state = 0; // 0 LED apagado, mientras que 1 encendido
int old_val = 0; // almacena el antiguo valor de val
void setup(){ // definir si la variable es de entrada // o salida.
pinMode(LED,OUTPUT); // establecer que el pin digital es una señal de salida
pinMode(BOTON,INPUT); // y BOTON como señal de entrada
}
void loop() { // loop = realice un lazo continuamente
val= digitalRead(BOTON); // lee el estado del Boton
if ((val == HIGH) && (old_val == LOW)){
state=1-state;
delay(10);
}
old_val = val; // valor del antiguo estado
if (state==1){
digitalWrite(LED, HIGH); // enciende el LED
}
else{
digitalWrite(LED,LOW); // apagar el LED
}
}
Algoritmo 1 Código para encender y apagar un LED utilizando un botón pulsador.
Implementación del algoritmo 1 en el simulador https//123d.circuits.io:
2.5 Conclusión:
En esta práctica se ha introducido un suiche mediante botón pulsador que sirve para activar o desactivar parte del código en Arduino o comportamiento del circuito. Con un botón pulsador se puede activar el encendido de un LED y con el mismo botón luego apagarlo. Arduino mejora los comportamientos de un circuito, en este caso, el circuito de la práctica 2 con solo cambiar el código de Arduino, se ha logrado obtener una respuesta diferente del circuito.
Si nuestro contenido te fue de utilidad, por favor considera dar tu apoyo a lo que hacemos:
Genial! Muchas gracias por el aporte. Muy bien explicado y muy didáctico!
Gracias Adolfo por tus comentarios!