Arduino - Pantalla de 4 dígitos de 7 segmentos TM1637

Una pantalla de 4 dígitos con 7 segmentos es necesaria para proyectos de reloj, temporizador y contador, pero normalmente requiere 12 conexiones. El módulo TM1637 facilita las cosas al requerir solo 4 conexiones: 2 para la alimentación y 2 para controlar los segmentos.

Este tutorial no te abrumará al profundizar en hardware. En su lugar, aprenderemos cómo conectar una pantalla de 4 dígitos de 7 segmentos a Arduino y cómo programarla para mostrar lo que queremos.

Pantalla de 4 dígitos de 7 segmentos TM1637 para Arduino

Este tutorial va a utilizar el módulo de pantalla de 4 dígitos de 7 segmentos con dos puntos. Si desea mostrar números en punto flotante, por favor utilice el Módulo de Pantalla de 4 Dígitos de 7 Segmentos 74HC595

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Pantalla de 7 segmentos de 4 dígitos TM1637
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca de TM1637: pantalla de 4 dígitos de 7 segmentos

Un módulo TM1637 consta típicamente de cuatro LEDs de siete segmentos y un LED en forma de dos puntos en el centro: Es ideal para mostrar la hora en horas y minutos, o minutos y segundos, o las puntuaciones de dos equipos.

Diagrama de pines

El módulo de visualización de 4 dígitos de 7 segmentos TM1637 incluye 4 pines:

  • CLK pin: es un pin de entrada de reloj. Conéctalo a cualquier pin digital en Arduino.
  • DIO pin: es un pin de datos I/O. Conéctalo a cualquier pin digital en Arduino.
  • VCC pin: es un pin que suministra energía al módulo. Conéctalo a una fuente de alimentación de 3.3V a 5V.
  • GND pin: es un pin de tierra.
Pinout del módulo TM1637

Diagrama de Cableado

Para conectar un TM1637 a un Arduino, conecta cuatro cables: dos para la alimentación y dos para controlar la pantalla. El módulo puede alimentarse desde la salida de 5 voltios del Arduino. Conecta los pines CLK y DIO a cualquiera de los pines digitales del Arduino. Por ejemplo, 2 y 3 en el Arduino. Los números de los pines en el código deben cambiarse si se utilizan pines diferentes.

Diagrama de cableado del módulo Arduino TM1637

This image is created using Fritzing. Click to enlarge image

Instalación de la biblioteca

Para programar fácilmente la pantalla TM1637 de 4 dígitos y 7 segmentos, necesitamos instalar la biblioteca TM1637Display de Avishay Orpaz. Siga los pasos a continuación para instalar la biblioteca:

  • Ve al icono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “TM1637”, luego encuentra la biblioteca TM1637Display de Avishay Orpaz
  • Haz clic en el botón Instalar.
Biblioteca para pantallas de 7 segmentos de 4 dígitos TM1637 para Arduino

Cómo programar para TM1637 de 4 dígitos y 7 segmentos usando Arduino

  • Incluir la biblioteca
#include <TM1637Display.h>
  • Define los pines de Arduino que se conectan a CLK y DIO del módulo de visualización. Por ejemplo, los pines D9 y D10
#define CLK 9 #define DIO 10
  • Crea un objeto de visualización del tipo TM1637Display
TM1637Display display = TM1637Display(CLK, DIO);
  • Luego puedes mostrar un número, un número con decimales, un número con signo negativo o una letra. En el caso de la letra, necesitas definir la forma de la letra. Veámoslas una por una.
  • Mostrar número: vea los ejemplos a continuación; '_' en la descripción que se muestra a continuación representa un dígito que no se muestra en la práctica:
display.showNumberDec(-12); // displayed _-12 display.showNumberDec(-999); // displayed -999 display.showNumberDec(42); // displayed __42 display.showNumberDec(42, false); // displayed __42 display.showNumberDec(42, false, 2, 0); // displayed 42__ => display 2 digit at position 0 display.showNumberDec(42, true); // displayed 0042 => zero padding display.showNumberDec(14, false, 2, 1); // displayed _14_ display.showNumberDec(-5, false, 3, 0); // displayed _-5_ display.showNumberDec(1234); // displayed 1234
  • Muestra el número con dos puntos o con un punto:
// displayed 15:30 in the colon-separated module, or 15.30 in the colon-separated module display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

Puede ver más detalles en las referencias de las funciones al final de este tutorial.

Código de Arduino

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> // define the connections pins #define CLK 9 #define DIO 10 // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); // an array that sets individual segments per digit to display the word "dOnE" const uint8_t done[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O SEG_C | SEG_E | SEG_G, // n SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E }; // degree celsius symbol const uint8_t celsius[] = { SEG_A | SEG_B | SEG_F | SEG_G, // Degree symbol SEG_A | SEG_D | SEG_E | SEG_F // C }; void setup() { display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) } void loop() { // show counter 0-9 int i; for (i = 0; i < 10; i++) { display.showNumberDec(i); delay(500); display.clear(); } display.showNumberDec(-91); // displayed _-91 delay(2000); display.clear(); display.showNumberDec(-109); // displayed -109 delay(2000); display.clear(); display.showNumberDec(21, false); // displayed __21 delay(2000); display.clear(); display.showNumberDec(21, true); // displayed 0021 delay(2000); display.clear(); display.showNumberDec(28, false, 2, 1); // displayed _28_ delay(2000); display.clear(); display.showNumberDec(-9, false, 3, 0); // displayed _-9_ delay(2000); display.clear(); // displayed 15:30 display.showNumberDecEx(1530, 0b11100000, false, 4, 0); delay(2000); display.clear(); // displayed 23°C int temperature = 23; // or read from temperature sensor display.showNumberDec(temperature, false, 2, 0); display.setSegments(celsius, 2, 2); delay(2000); display.clear(); // displayed letters: dOnE display.setSegments(done); delay(2000); display.clear(); }

Pasos R\u00e1pidos

  • Copie el código anterior y ábralo con Arduino IDE
  • Haga clic en el botón Upload en Arduino IDE para cargar el código en Arduino
  • Vea los estados de la pantalla de 7 segmentos

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Referencias de Funciones

A continuación se presentan referencias para las funciones siguientes:

  • display.clear()
  • display.showNumberDec()
  • display.showNumberDecEx()
  • display.setSegments()
  • display.setBrightness()

pantalla.limpiar()

Descripción

Esta función borra la pantalla. Apaga todos los LEDs.

display.showNumberDec()

Descripción

La función se utiliza para mostrar un número decimal en la pantalla de 7 segmentos.

Sintaxis

void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Parámetro

  • num: Este es el número que se mostrará en la pantalla de 7 segmentos. Debe estar dentro del rango de -9999 a 9999.
  • leading_zero: Este es un parámetro opcional con un valor por defecto de false. Si se establece en true, se mostrarán ceros a la izquierda.
  • length: Este es un parámetro opcional con un valor por defecto de 4. Establece el número de dígitos que se mostrarán en la pantalla de 7 segmentos.
  • pos: Este es un parámetro opcional con un valor por defecto de 0. Establece la posición del dígito más significativo del número.

Por favor, tenga en cuenta que, si el número está fuera de rango o si el valor de la longitud es mayor que 4, la función no mostrará nada.

showNumberDecEx()

Descripción

La función se utiliza para mostrar un número decimal en la pantalla de 7 segmentos con características adicionales en comparación con la función showNumberDec(). Es una versión avanzada de showNumberDec() que permite controlar de forma individual el punto decimal o los segmentos de dos puntos de cada dígito.

Sintaxis

void showNumberDecEx(int num, uint8_t dots, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Parámetro

  • num1: Este es el número que se mostrará en la pantalla de 7 segmentos. Debe estar dentro del rango de -9999 a 9999.
  • dots: Este parámetro se utiliza para especificar qué segmentos de la pantalla deben encenderse como puntos. Cada bit del valor corresponde a un dígito en la pantalla: Valor válido
    • 0b10000000: mostrar el primer punto: 0.000
    • 0b01000000: mostrar el segundo punto: 00.00
    • 0b00100000: mostrar el tercer punto: 000.0
    • 0b01000000: Para pantallas con solo dos puntos: 00:00
  • leading_zero: Este es un parámetro opcional con un valor por defecto de false. Si se establece en true, se mostrarán ceros a la izquierda.
  • length: Este es un parámetro opcional con un valor por defecto de 4. Establece el número de dígitos que se mostrarán en la pantalla de 7 segmentos.
  • pos: Este es un parámetro opcional con un valor por defecto de 0. Establece la posición del dígito más significativo del número.

Por ejemplo, si llamas a display.showNumberDecEx(1530,0b01000000); mostrará el número 15:30 en la pantalla de 7 segmentos.

Por favor, tenga en cuenta que si el número está fuera de rango o si el valor de la longitud es mayor que 4, la función no mostrará nada.

establecerSegmentos()

Descripción

La función se utiliza para configurar directamente los segmentos de la pantalla de 7 segmentos. Se puede usar para mostrar letras, un carácter especial, o activar todos los segmentos LED.

Sintaxis

void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);

Parámetro

  • segments: Este parámetro establece los segmentos de la pantalla de 7 segmentos; es un arreglo de bytes, donde cada byte representa los segmentos de cada dígito. Cada segmento está representado por un bit en el byte.
  • length: Este es un parámetro opcional con un valor predeterminado de 4. Establece el número de dígitos que se mostrarán en la pantalla de 7 segmentos.
  • pos: Este es un parámetro opcional con un valor predeterminado de 0. Establece la posición del dígito más significativo del número.

Esta función es útil cuando quieres mostrar caracteres o símbolos que no están incluidos en la pantalla de 7 segmentos básica. Al configurar directamente los segmentos, puedes mostrar cualquier patrón que desees.

Por favor, tenga en cuenta que, si el número está fuera de rango o si el valor de la longitud es mayor que 4, la función no mostrará nada.

establecerBrillo()

Descripción

La función se utiliza para ajustar el brillo de la pantalla de 7 segmentos.

Sintaxis

void setBrightness(uint8_t brightness, bool on = true);

Parámetro

  • brightness: Este parámetro establece el nivel de brillo de la pantalla de 7 segmentos. El valor debe estar en el rango de 0 a 7. Un valor mayor resulta en una pantalla más brillante.
  • on: Este es un parámetro opcional con un valor por defecto de true. Se utiliza para encender o apagar la pantalla. Si se establece en false, la pantalla se apagará.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!