La semana pasada vimos cómo crear una alarma casera a base de Arduino. Para ello utilizamos un sensor de proximidad, más conocido como un HC-SR04, un buzzer y un LED rojo que colocamos a modo de agregado a nuestro "rostro" impreso en 3D. Hoy le vamos a añadir a dicho proyecto una pantalla digital LED Display de 8 bits también conocido como un display de 4 digitos y 7 segmentos TM1637.
Este proyecto fue hecho como introducción al display TM1637 (le veremos más en detalle más adelante).
En este caso tenemos una alarma que hace uso del sensor de distancia HC-SR04 para reconocer un objeto que se le acerca mostrando en todo momento la distancia a la que se encuentra con el TM1637 y que cuando tiene un objeto a 10 centímetros o menos de distancia activa un LED rojo que se enciende y se apaga así como un buzzer que reproduce una melodía.
Construye una alarma con un HC-SR04, un buzzer, un display TM1637 y un LED
¿Qué necesitaremos?
Nosotros, para el proyecto que nos ocupa hemos hecho un uso exclusivo de componentes de AZ Delivery, más que nada porque se trata de un fabricante serio con una excelente atención post-venta y con el que hemos tenido experiencias muy positivas en el pasado.
Tampoco está demás que cuando pides un componente te llegue en un par de días en lugar de esperar varias semanas como sucede con otros fabricantes de componentes.
Una vez que tenemos los componentes hacemos la conexión según los diagramas que se observan a continuación:
Parece un poco enrevesado pero es más fácil de lo que parece. En resumen conectamos el buzzer al pin 7, el LED al pin 6, el HC-SR04 a los pines 10 y 11, y el módulo TM1637 lo conectamos a los pines 3 y 4.
El módulo TM1637 no depende de ningún pin en concreto de modo que se le puede conectar a cualquier pin sin miedo.
Para usar el módulo vamos a utilizar la
librería del TM1637 creada por Avishay Orpaz. Más adelante exploraremos las funciones disponibles en esta librería para controlar el display,
puedes leer la documentación de la misma aquí.
Las principales funciones que nos van a interesar de esta clase son setSegments () que nosotros vamos a usar para encender el display, showNumberDec () que muestra un número decimal y es la función que usaremos para mostrar la distancia recogida por el HC-SR04 y setBrightness () que define el brillo del display, siendo 0 el valor más bajo y 7 el valor más alto que le podemos atribuir.
Por cierto, para dotar de una "cara" a nuestro proyecto hemos utilizado el
PLA Silk Copper de GEEETECH impreso en una
impresora Ender 3. Tal y cómo se ve en la imagen es como ha salido de la impresora, no ha recibido ningún tipo de tratamiento.
Una vez tengamos esto claro, hechas las conexiones, vamos a pasar a subir el código para poder ejecutar el proyecto.
Cómo podemos ver se trata de un código bastante sencillo que hace eco de lo que se hizo en el ejercicio anterior sin el display, haciendo uso únicamente del sensor HC-SR04, el LED y el buzzer. Las modificaciones que se han hecho han sido para incluir el sensor TM1637.