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

Este tutorial enseña a usar el Arduino Nano ESP32 con el módulo de 4 dígitos de 7 segmentos TM1637. Cubre los siguientes temas:

Arduino Nano ESP32 TM1637 pantalla de 4 dígitos de 7 segmentos

En este tutorial, utilizaremos un módulo de visualización de 4 dígitos de 7 segmentos con separador de dos puntos. Si desea mostrar números en punto flotante, consulte el tutorial de 74HC595 4-digit 7-segment Display Module.

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×TM1637 4-digit 7-segment Pantalla
1×Protoboard
1×Cables Puente
1×(Opcional) 5V Power Adapter for Arduino Nano ESP32
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

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 la pantalla de 7 segmentos de 4 dígitos TM1637

Una pantalla de 4 dígitos de 7 segmentos se utiliza comúnmente para reloj, temporizador y contador, mostrando temperatura... Sin embargo, normalmente requiere 12 conexiones. El módulo TM1637 simplifica esto al necesitar solo 4 conexiones: 2 para la alimentación y 2 para controlar los segmentos.

Un módulo TM1637 generalmente consta de cuatro LEDs de 7 segmentos y una de las siguientes opciones:

  • 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 el marcador de dos equipos.
  • Cuatro LEDs en forma de puntos para cada dígito: Es ideal para mostrar la temperatura o cualquier valor decimal.

Disposición de pines de la pantalla TM1637 de 4 dígitos y 7 segmentos

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

  • Pin CLK: es un pin de entrada de reloj que debe conectarse a cualquier pin digital en Arduino Nano ESP32.
  • Pin DIO: es un pin de datos I/O que debe conectarse a cualquier pin digital en Arduino Nano ESP32.
  • Pin VCC: se utiliza para suministrar energía al módulo y debe conectarse a la fuente de alimentación de 3.3V a 5V.
  • Pin GND: es un pin de tierra que debe conectarse a la tierra de Arduino Nano ESP32.
Pinout del módulo TM1637

Diagrama de Cableado

Para conectar un TM1637 a un ESP32, se requieren cuatro cables: dos para la alimentación y dos para controlar la pantalla. El módulo puede alimentarse con la salida de 5 voltios del Arduino Nano ESP32. Los pines CLK y DIO deben conectarse a cualquier pin digital del Arduino; por ejemplo, los pines 2 y 3. Si se utilizan pines diferentes, los números de pin en el código deben modificarse.

Diagrama de cableado del módulo Arduino Nano ESP32 TM1637

This image is created using Fritzing. Click to enlarge image

Instalación de la biblioteca

Para programar fácilmente con la pantalla TM1637 de 4 dígitos y 7 segmentos, necesitamos instalar la biblioteca TM1637Display de Avishay Orpaz. Sigue los siguientes pasos para instalar la biblioteca:

  • Abrir el Administrador de Bibliotecas haciendo clic en el icono Administrador de Bibliotecas en la barra de navegación izquierda de Arduino IDE
  • Buscar “TM1637”, luego localiza la biblioteca TM1637Display de Avishay Orpaz
  • Haz clic en el botón Instalar.
Biblioteca de Arduino para pantalla de 4 dígitos de 7 segmentos TM1637

Cómo programar para TM1637 con pantalla de 4 dígitos de 7 segmentos utilizando Arduino Nano ESP32

  • Incluir la biblioteca
#include <TM1637Display.h>
  • Especifique los pines del Arduino Nano ESP32 que están conectados al CLK y al DIO del módulo de pantalla. Por ejemplo, D9 y D10.
#define CLK D9 // The Arduino Nano ESP32 pin connected to the CLK pin of 7-segment module #define DIO D10 // The Arduino Nano ESP32 pin connected to the DIO pin of 7-segment module
  • Crea un objeto TM1637Display.
TM1637Display display = TM1637Display(CLK, DIO);
  • Entonces puedes mostrar números, números con decimales, números con signos negativos o letras. En el caso de las letras, debes especificar la forma de la letra. Veamos cada una por separado.
  • Mostrar números: vea los ejemplos a continuación; '_' en la siguiente descripció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 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 encontrar información adicional sobre las funciones al final de este tutorial.

Arduino Nano ESP32 Código

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> // define the connections pins #define CLK D9 // The Arduino Nano ESP32 pin connected to the CLK pin of 7-segment module #define DIO D10 // The Arduino Nano ESP32 pin connected to the DIO pin of 7-segment module // 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

Para empezar con Arduino Nano ESP32 en el IDE de Arduino, siga estos pasos:

  • Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
  • Conecta los componentes de acuerdo con el diagrama proporcionado.
  • Conecta la placa Arduino Nano ESP32 a tu computadora usando un cable USB.
  • Inicia el IDE de Arduino en tu ordenador.
  • Selecciona la placa Arduino Nano ESP32 y su puerto COM correspondiente.
  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Compila y carga el código en la placa Arduino Nano ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
Cargar código en el IDE de Arduino
  • Consulta 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 las referencias para:

  • display.limpiar()
  • display.mostrarNumeroDec()
  • display.mostrarNumeroDecEx()
  • display.configurarSegmentos()
  • display.configurarBrillo()

display.clear()

Descripción

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

display.showNumberDec()

Descripción

La pantalla de 7 segmentos se utiliza para mostrar un número decimal. Esta función se utiliza para ese fin.

Sintaxis

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

Parámetro

  • num: es el valor que se mostrará en la pantalla de 7 segmentos, que va desde -9999 hasta 9999.
  • leading_zero: un parámetro opcional con un valor por defecto de falso, determina si se deben mostrar ceros a la izquierda.
  • length, otro parámetro opcional con un valor por defecto de 4, establece el número de dígitos que se mostrarán.
  • pos: también un parámetro opcional con un valor por defecto de 0, establece la posición del dígito más significativo.

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

showNumberDecEx()

Descripción

Esta función es una mejora de showNumberDec(), que ofrece un mayor control sobre la visualización de un número decimal en la pantalla de 7 segmentos. Tiene la capacidad de 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 usa para especificar qué segmentos de la pantalla deben encenderse como puntos. Cada bit del valor corresponde a un dígito en la pantalla. Los valores posibles son:
    • 0b10000000 para mostrar el primer punto (0.000)
    • 0b01000000 para mostrar el segundo punto (00.00), o los dos puntos (00:00). Depende del tipo de módulo.
    • 0b00100000 para mostrar el tercer punto (000.0)
  • 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. Determina la cantidad 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 usas display.showNumberDecEx(1530, 0b01000000), mostrará:

  • El número 15:30 en la pantalla de 7 segmentos si el módulo tiene un LED con forma de dos puntos.
  • El número 15.30 en la pantalla de 7 segmentos si el módulo tiene LEDs con forma de puntos.

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

establecerSegmentos()

Descripción

La función permite ajustar directamente los segmentos de la pantalla de 7 segmentos. Se puede utilizar para mostrar letras, caracteres especiales o para apagar 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, que es un arreglo de bytes. Cada byte representa los segmentos de cada dígito y cada segmento está representado por un bit en el byte.
  • length: Este es un parámetro opcional con un valor predeterminado de 4. Determina 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. Especifica la posición del dígito más significativo del número.

Esta función es útil cuando necesitas mostrar caracteres o símbolos que no están disponibles en la pantalla de 7 segmentos estándar. Puedes crear cualquier patrón que desees configurando directamente los segmentos.

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

establecerBrillo()

Descripción

El brillo de la pantalla de 7 segmentos puede ajustarse mediante esta función.

Sintaxis

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

Parámetro

  • brightness: Este parámetro ajusta la luminosidad de la pantalla de 7 segmentos. El valor debe estar entre 0 y 7, y cuanto mayor sea el número, más brillante será la pantalla.
  • on: Este es un parámetro opcional, con un valor predeterminado de true. Se utiliza para encender o apagar la pantalla. Si se establece en false, la pantalla quedará desactivada.

※ 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!