martes, 12 de diciembre de 2017

Display de 7 segmentos TM1637 con Arduino

Resultado de imagen para display tm1637Resultado de imagen para display tm1637
Todos aquellos que hayan trabajado con un display de 7 segmentos saben lo tedioso que puede ser armar un circuito en una protoboard con multiplexores y la gran cantidad de conexiones que se requieren.  Es por esto que existen módulos  como el TM1637, el cual es un módulo que tiene varios componentes incluidos con el fin de reducir al mínimo el número de conexiones, incluyendo ya el multiplexor y circuitos latchs para mantener los números escritos previamente.

El módulo funciona por medio de sólo 4 conexiones, dos de energía, una para la señal de reloj y una para datos. Esto reduce considerablemente las conexiones que usualmente tendríamos que hacer para usar cuatro displays de 7 segmentos como estos. Los datos se ingresan al módulo por medio de comunicación serial, de ahí que sólo un pin es necesario para datos, mientras tanto el pin de reloj define el tiempo en que se envían tales datos. A continuación describimos las conexiones del módulo:

VCC = Referencia positiva de 3.3 V a 5V

GND = Referencia negativa

DIO = Entrada serial de datos

CLK = Entrada de  señal de reloj

El envío de los datos al módulo es más bien simple, el fabricante del chip da un instructivo para esto en el data sheet con el fin de que podamos programarlo en un microcontrolador. Sin embargo, para Arduino, el fabricante provee ya una librería con el fin de que podamos mandar datos a nuestro display de la forma más sencilla posible. A continuación presentamos un ejemplo donde mostramos  la forma de conexión y los comandos más básicos de la librería.

Esquema  de conexión con Arduino UNO





Código Arduino

#include "TM1637.h" //incluimos la librería
#define CLK A1    // definimos los pines donde se debe conectar
#define DIO A0

TM1637 Display1(CLK,DIO); // creamos una variable del tipo de dato TM1637
int8_t Digits[] = {0,0,0,0}; // el valor inicial  a desplegar

void setup()
   {  
       Display1.set();  //  inicalizamos el display
       Display1.init() ;
   }

void loop()
{
// un contador de 0 a 999 
 for (int i=0 ; i < 1000 ; i++){
  Digits[0] = 0;
  Digits[1] = floor(i/100);
  Digits[2] = floor((i%100)/10); 
  Digits[3] = floor(i%10);
  delay(1000); 
  Display1.display(Digits); // la función para escribir en el display,  cada dígito diferenciado
 }
}


Una vez carguemos este código, el display mostrará un contador que va de 0 a 999, avanzando segundo a segundo.


FIN DEL POST

0 comentarios:

Publicar un comentario

Display matricial 8x8 con Arduino SPI y MAX7219

La matrices led de 8x8 son elementos extremadamente útiles para desplegar mensajes que puedan ser visibles desde la distancia. ...