Descripción ADM
Conectaremos a Arduino un pulsador y un LED, este se encenderá cuando pulsemos el pulsador y se apagará cuando soltemos el pulsador y viceversa, para ello
pediremos a arduino que configure el pin 6 como salida digital para gobernar al LED y el pin 10 como entrada digital, para leer el estado del botón pulsador.
Encendido o apagado, abierto o cerrado, todo o nada, Si o No, Verdadero o Falso, True o False, 0 o 1, todo esto viene a ser lo mismo, para arduino solo son señales digitales, dos posibles estados. Este tipo de señales, se pueden manejar con los pines del 0 al 13 de arduino, es por ello que se les llama pines digitales.
Muchos de los sensores y actuadores del mundo real son digitales.
Conectaremos a Arduino un pulsador y un LED, este se encenderá cuando pulsemos el pulsador y se apagará cuando soltemos el pulsador y viceversa, para ello
pediremos a arduino que configure el pin 6 como salida digital para gobernar al LED y el pin 10 como entrada digital, para leer el estado del botón pulsador.
Encendido o apagado, abierto o cerrado, todo o nada, Si o No, Verdadero o Falso, True o False, 0 o 1, todo esto viene a ser lo mismo, para arduino solo son señales digitales, dos posibles estados. Este tipo de señales, se pueden manejar con los pines del 0 al 13 de arduino, es por ello que se les llama pines digitales.
Muchos de los sensores y actuadores del mundo real son digitales.
¿Que es un sensor?Un sensor es un componente o dispositivo que recibe un estímulo externo del mundo real, y lo convierte en señales eléctricas para ser procesadas posteriormente. Los sensores pueden ser analógicos, es decir, pueden leer una amplio rango de valores, o digitales, que solamente pueden leer dos valores 0 y 1.
Un ejemplo de un sensor analógico es un micrófono que capta infinidad de presiones del aire
Un ejemplo de un sensor digital puede ser un simple pulsador, que detecta cuando alguien o algo lo presiona o no.
¿Que es un actuador?
Un actuador es justo lo contrario al sensor, es uncomponente o dispositivo, que cuando recibe una señal eléctrica, la convierte en señales para el mundo real. Los actuadores pueden ser analógicos, o digitales.
Un ejemplo de actuador analógico es un altavoz, que convierte infinidad de valores electrícos en ondas de aire.
Un ejemplo de un actuador digital es un diodo LED, señala presencia o no pues solo se activa con dos valores 0 o apagado y 1 o encendido.
Tanto los sensores como los actuadores son considerados transductores, ya que convierten cualquier energia en energía eléctrica y viceversa.
Ya hemos visto que Arduino puede usar los pines digitales como salida digital para un actuador, un diodo LED. De la misma manera puede leer valores del mundo exterior, convirtiendo el pin en una entrada digital, en lugar de una salida digital, de hecho algunos se pueden usar de salida y otros de entrada, simultáneamente, es decir, que podemos configurar algunos pines como salida digital y otros como entrada digital en el mismo circuito y momento.
¿Que es un pulsador?Básicamente un pulsador es un dispositivo mecánico que permite el paso de la corriente eléctrica mientras es presionado. Una vez que se deja de presionar, interrumpe el paso de la corriente. Básicamente hay dos tipos de pulsadores, los normalmente abierto y los normalmente cerrados.
Pulsador normalmente abierto
Es aquel que no deja pasar la corriente, pero una vez que es pulsado, dejará pasar corriente mientras se mantenga la presión.
Pulsador normalmente cerrado
Es aquel que deja pasar la corriente, pero una vez que es pulsado, la corriente será cortada y no pasará mientras se mantenga la presión.
En este circuito utilizaremos el más común de los pulsadores, el pulsador normalmente abierto,cuyo símbolo en los esquemas es:
Componentes
Para este circuito vamos a necesitar:
1 diodo LED
2 resistencia 330
1 pulsador normalmente abierto
Esquema
Conectamos un diodo D1 entre pin 6 y su resistencia limitadora R1 de 330 ohmios, que a su vez se conectará a GND. Además conectamos un segundo circuito que consiste en conectar una resistencia R2 entre el pin 10 y a la alimentación o polo positivo, en este caso, la alimentación estará proporcionada por el mismo arduino en sus pines de 5V. A las resistencia conectada de este modo que fuerzan el valor alto (HIGH) en una entrada se le conoce como Pullup. Si en lugar de conectarla a la alimentación, se le conectara a la GND para forzar un valor bajo (LOW), se le llama resistencia Pulldown. Esta resistencia es clave para el buen funcionamiento del pulsador, porque si la omitimos, el pulsador en lugar de un estado alto o bajo, tendríamos un estado flotante o indeterminado, provocando un error en su funcionamiento. Por último arduino estará conectado a una fuente de alimentación, bien a través de su puerto USB o de su Conector de alimentación.
Resistencia Pull up
Es aquella que se conecta entre la entrada digital y el polo positivo (Vcc) de la alimentación para asegurar un nivel alto (HIGH) o 1 lógico en dicha entrada
Resistencia Pull down
Es aquella que se conecta entre la entrada digital y el polo negativo (GND) de la alimentación para asegurar un nivel bajo (LOW) o 0 lógico en dicha entrada
Fíjate que mientras no se presione el pulsador, el pin 10 de Arduino está conectado a 5V a través de la R2 forzando una lectura de tensión alta (HIGH). En cambio cuando se presiona el pulsador el pin 10 va directamente a GND con lo que leerá tensión baja, (LOW), en ambos caso tenemos un valor de tensión definido, y esto es importante.
Montaje
Una forma de montar el circuito en la protoboard puede ser la siguiente:
Observa que el pulsador tiene 4 pines, puedes conectar solo dos pines y dejar los otros dos sin conectar, o conectar los 4 pines, dos a la entrada del pulsador y dos a la salida del pulsador. Si tienes dudas usa el multímetro para saber cuales son los dos pines que pertenecen a una parte del pulsador que están conectados entre sí, cuales son los otros dos pines del pulsador que corresponden a la otra parte del mismo. El pulsador no tiene polaridad cada parte puede ser entrada o salida.
Código
En programas sencillos basta con poner el número de pin en las instrucciones, pero en programas más complicados, esto tiende a provocar errores, por eso, es costumbre definir variables con los números de pin que usamos, así si tenemos que modificar alguno, solo tenemos que tocar en un solo lugar. Normalmente las variable globales se declaran arriba del todo.
//Pulsador normalmente cerrado
int LED = 6;
int boton = 10;
void setup() {
pinMode(LED, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
int valor = digitalRead(boton);
digitalWrite(LED, valor);
}
En la función void setup(), se establece LED que es el pin 6 como salida con el pinMode y marcando la instrucción OUTPUT(salida) y boton que es el pin 10 como entrada con pinMode y marcando INPUT (entrada).
En la función void loop(), se crea una variable local llamada "valor" de tipo entero, y se le asigna como valor de dicha variable, la instrucción digitalRead (boton); que guarda en la "valor" lo que está leyendo dentro de la variable "boton" y que a su vez es valor que hay presente en el pin de entrada 10, que será 1 o HIGH, si el pulsador no está presionado o 0 o LOW si el pulsador está presionado. Luego escribirá en la variable LED el resultado que haya guardado en la variable "valor". Si es un HIGH encenderá el LED y si es un LOW apagará el LED. Por tanto, el LED permanecerá encendido hasta que se presione el pulsador, y cuando esto ocurra, se apagará y permanecerá apagado hasta que se suelte el pulsador.
Para lograr, que el LED permanezca apagado y se encienda cuando presionemos el pulsador, solo le tenemos que decir a Arduino que escriba en LED, lo contrario de lo que lea en boton, para hacer eso vamos a utilizar el operador lógico negación (NOT), su símbolo es !, vamos a ver el código modificado.
//Pulsador normalmente abierto
int LED = 6;
int boton =10;
void setup() {
pinMode(LED, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
int valor = digitalRead(boton);
digitalWrite(LED, !valor);
}
En la última línea dentro de los parámetro de digitalWrite, hemos añadido el operado de negación (NOT) que es !, justo delante de valor, con esto estamos diciendo a Arduino, que escriba en la variable LED, lo contrario de lo que lea en la variable valor. y vamos ahora a ver el resultado.
Ahora vemos que hemos conseguido lo que queríamos, que el LED se encienda cuando pulsamos y que se apague cuando soltamos. Pero para dejar el código un poco más optimizado, vemos que la variable "valor" en realidad solo va a tomar dos valores, 0 y 1, con lo cual al ser de tipo entero, está utilizando o reservando memoria para guardar números grandes como 32.000 por ejemplo, así que para no ocupar tanta memoria, vamos a cambiar el tipo de valor de int a bool, que solo reserva memoria para dos valores 0 y 1 o lo que es lo mismo true y false, con lo que dejamos más memoria libre para otros usos. El código definitivo se quedaría así
//Pulsador normalmente abierto optimizado
int LED = 6;
int boton =10;
void setup() {
pinMode(LED, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
bool valor = digitalRead(boton);
digitalWrite(LED, !valor);
}
y el funcionamiento de este circuito es exactamente igual que con la variable de tipo int.