Display de 7 segmentos y 4 dígitos con interface

Objetivos

  • Display numérico de 4 digitos.
  • Multiplexando los dígitos.
  • Aprendiendo a programar: Dividiendo el problema en funciones.
  • Operaciones con enteros

Material requerido

 arduino
  • Arduino Uno o similar. Esta sesión acepta cualquier otro modelo de Arduino.
 Img_3_4
  •  Una Protoboard.
 Img_3_6-300x185
  • Algunos cables de Protoboard.
BCD-4-digit1
  • Un display de 7 segmentos y 4 dígitos.

LOS DISPLAYS LED DE 4 DÍGITOS.

Existen un display de 4 dígitos en el que nosotros tendríamos que montar toda la electrónica.

BCD-4-digit

Funcionaba bastante bien, y no se notaba el truco de multiplexar los dígitos, porque en general los Arduinos son lo suficientemente rápidos para que no lo percibamos.

Pero es muy pesado montar el circuito en una protoboard, por la cantidad de cables que supone conectar y por lo fácil que es equivocarse o soltar uno inadvertidamente.

En la práctica es mucho mejor utilizar un display con sistema anexo de control, que son un poco más caros, pero mucho más fáciles de montar.

En realidad son tan sencillos que no suelen tener más de 4 pines y se controlan por software directamente.

Vamos a ver un display de Catalex, un fabricante chino, de 4 dígitos que se gobierna con 4 pones, dos son Vcc y GND, tiene una librería muy simple y funciona tanto a 5V como a 3,3V.

DIAGRAMA DE CONEXIÓN.

El cableado de uno de estos displays es insultantemente sencillo. Conectamos tensión y Ground y solo nos quedan 2 hilos: DIO o Data y Clock, que conectamos a los pinos 2 y 3 respectivamente. Y eso es todo.

Img_32_2-1024x743

EL PROGRAMA DE CONTROL.

El fabricante del display nos proporciona una librería para que poder simplificar su utilización: TM1637. Una biblioteca Arduino para módulos de visualización de 7 segmentos basados en el chip TM1637, como la pantalla de 4 dígitos Grove de Seeed Studio. El chip TM1637 también tiene capacidad de entrada de teclado, pero no está implementado en esta biblioteca.

En otras entradas ya hemos visto como descargar e instalar una librería: seleccionad Sketch – Incluir biblioteca – gestinar bibliotecas e indicadle la librería a instralar.

Crea un programa e incluye las librerías siguientes:

#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 3
#define DIO 2

Ahora tenemos que crear una instancia del tipo TM1637Display que llamaremos display y le pasamos los pines que controlan la comunicación:

TM1637Display display(CLK, DIO);

Y ahora el fabricante nos pide que le pasemos los dígitos a representar en un array de 4 unsigned byte definidos con un tipo raro uint8_t, 2 ejemplos de vectores (lleno y vacio):

uint8_t data[]  = {0xff, 0xff, 0xff, 0xff};
uint8_t blank[] = {0x00, 0x00, 0x00, 0x00};

Y ahora hay que inicializar la librería y el display indicando el brillo:

void setup(){
     display.setBrightness(0x0f);
     display.clear();
}

Y ahora ya solo queda pedirle que visualice los vectores:

display.setSegments(data);
 delay(2000);
display.clear();
display.setSegments(digitos);
 delay(2000);
display.clear();
display.setSegments(blank);
delay(2000);
display.clear()2

Para mostrar números con ceros o sin ceros delante :

display.showNumberDec(0, false); // Expect: ___0
delay(2000);

display.showNumberDec(0, true); // Expect: 0000
delay(2000);

display.showNumberDec(1, false); // Expect: ___1
delay(2000);

display.showNumberDec(1, true); // Expect: 0001
delay(2000);

display.showNumberDec(301, false); // Expect: _301
delay(2000);

display.showNumberDec(301, true); // Expect: 0301
delay(2000);

display.clear();

Y para hacer un contador:

void loop() {
 // put your main code here, to run repeatedly:
 for (int i = 0 ; i<10000 ; i++){
      display.showNumberDec(i, false);
      delay(1000);
 }
}

Deja un comentario