En este proyecto usaremos el Arduino para leer un sensor de inclinación de mercurio y encender un LED cuando es afectado el nivel del sensor. Para este proyecto utilizaremos el módulo de inclinación de mercurio KY-017 o cualquier módulo que encuentren y sea similar
Este es otro de esos proyectos muy fáciles de implementar y de código muy sencillo.
Módulo sensor de inclinación de mercurio
El sensor de mercurio permite detectar de forma fácil, rápida y precisa la inclinación del módulo producida en el lugar donde este se encuentre, este sensor es un conmutador de inclinación de mercurio que permite detectar la inclinación de un objeto para que se pueda generar una acción de control, este módulo es una alternativa de bajo costo para remplazar un acelerómetro. Cuando el sensor es ubicado estratégicamente puede ser muy sensible y se podría medir en uno o varios ejes. El sensor cuenta con dos estados donde el mercurio al hacer contacto con los dos pines del interruptor genera una salida BAJA y el led esta encendido, mientras que el mercurio no esté haciendo contacto con los pines genera una salida en ALTO y el led está apagado.. El módulo tiene tres pines, uno marcado con «-» para conectarlo a tierra, el siguiente pin es el VCC, y el último pin marcado con una «S» que es el que envía la señal.
Especificaciones:
- Voltaje de operación: 3.3 – 5V
Componentes
Basados en el diagrama lo primero que vamos a hacer es conectar el pin VCC del módulo a los 5V del Arduino, de igual forma conectamos el GND del módulo al GND del Arduino y el pin DO del sensor al pin 8 del Arduino. Luego conectamos la resistencia del 220Ω a la tierra del Arduino y al cátodo del LED, por último conectamos el ánodo del LED al pin 13 del Arduino.
Código
El código es el mismo del proyecto anterior, ya que son sensores muy similares.
int pinSensor = 8; int pinLed = 13; void setup() { pinMode(pinSensor,INPUT); pinMode(pinLed,OUTPUT); } void loop() { if(digitalRead(pinSensor)) { digitalWrite(pinLed,HIGH); delay(1000); digitalWrite(pinLed,LOW); delay(1000); } else digitalWrite(pinLed,LOW); }
Comenzaremos a revisar el código, primero vamos a ver las declaraciones de las variables.
int pinSensor = 8; int pinLed = 13;
Declaramos 2 variables, la primera de tipo entero int pinSensor = 8
, la cual utilizaremos como referencia que al pin 8 del Arduino le conectaremos el pin digital de sensor, la siguiente variable que declaramos
int pinLed
= 13 es la que utilizaremos para definir al pin en el cual vamos a conectar el led al Arduino.
En la función setup:
pinMode(pinSensor,INPUT); pinMode(pinLed,OUTPUT);
Lo primero que hacemos es establecer que el pin del sensor es de entrada pinMode(pinSensor,INPUT)
, y luego establecemos que el pin del led es de salida pinMode(pinLed,OUTPUT)
.
Y en la función loop:
if(digitalRead(pinSensor)) { digitalWrite(pinLed,HIGH); delay(1000); digitalWrite(pinLed,LOW); delay(1000); } else digitalWrite(pinLed,LOW);
Normalmente con este tiempo de sensores creamos una variable en la cual capturamos el valor del sensor, pero podemos ahorrarnos ese paso al hacer la lectura del sensor directamente desde el «if» if(digitalRead(pinSensor))
donde preguntamos que si la lectura del sensor es 1 entonces haga digitalWrite(pinLed,HIGH)
con lo que energizamos el pin del LED es decir encendemos el LED, luego delay(1000)
donde hacemos una pausa de un segundo, luego apagamos el LED digitalWrite(pinLed,LOW)
, y hacemos una pausa de nuevo de 1 segundo delay(1000)
.
Por otro lado si la condición del if no se cumple el LED permanece apagado digitalWrite(pinLed,LOW)
y vuelve a comenzar el ciclo.
Resumen
En este proyecto nuestro Arduino estará conectado a un sensor de inclinación que al cambiar el nivel de inclinación encenderá un LED por un segundo y se apagará, si el sensor sigue aun inclinado seguirá titilando y cuando vuelva a estar a nivel se apagará.