Pantalla de 4×7 segmentos Arduino

Arduino pantalla de 4 dígitos de 7 segmentos se utiliza para crear contadores o temporizadores en el Arduino y para la salida de valores digitales de los sensores en los proyectos. El módulo TM1637 se produce en esta pantalla, que es mucho más fácil de usar. Veamos el pinout del indicador LED de 4×7 segmentos Arduino, cómo conectar el módulo a la placa Arduino y veamos ejemplos de uso del indicador con descripciones de códigos.

Para esta actividad necesitaremos:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • módulo de pantalla de 4×7 segmentos;
  • resistencias de 220 Ohm y pulsador;
  • protoboard;
  • cables de conexion;
  • libreria TimerOne.h

Display 7 segmentos 4 digitos (pinout, datasheet)

El pinout de los segmentos del indicador de cuatro caracteres no difiere del pinout LED indicador de siete segmentos de un solo carácter del Arduino. El módulo display 7 segmentos 4 digitos se diferencia por el número de dígitos (símbolos): cada dígito se activa desconectando el cátodo correspondiente. Así, todos los LED de un segmento de dígitos (por ejemplo, A-A-A-A) se conectan en paralelo a un cátodo común de módulo pantalla.

Funcionamiento display de 4×7 segmentos pinout, datasheet
Funcionamiento de la display de 4×7 segmentos pinout, datasheet

La inclusión de un segmento es bastante fácil de gestionar. Pongamos un pequeño ejemplo. Inicialmente, los 4 dígitos (D1, D2, D3, D4) reciben tensión. Para activar el segmento A en el segundo carácter, debe aplicarse una tensión al pin A (ánodo). Pero el segmento no se encenderá hasta que apaguemos la tensión en el pin D2. De este modo, puede encenderse cualquier LED del módulo de visualización de 4 dígitos y 7 segmentos.

El problema de conectar el indicador es que utiliza varios pines del microcontrolador a la vez. Además, en el indicador de 4 dígitos y 7 segmentos sólo puede aparecer un dígito a la vez. Por lo tanto, es necesario imprimir el número deseado en cada dígito en muy poco tiempo. El ojo humano no tiene tiempo de asimilar la rápida conmutación de los LED y tendrá la impresión de que todos los dígitos se encienden al mismo tiempo.

Cómo conectar display de 4 dígitos Arduino

Conexión pantalla de 7 segmentos y 4 dígitos Arduino
Conexión pantalla de 7 segmentos y 4 dígitos Arduino

En el primer ejemplo, demostraremos un programa sencillo para que puedas entender claramente cómo funciona una pantalla de 4 dígitos y 7 segmentos en el Arduino. El diagrama de cómo conectar el indicador al microcontrolador se muestra en el diagrama anterior, pero en el primer ejemplo, no todos los pines del Arduino se utilizan en el programa. Conecta el indicador de 7 segmentos 4 dígitos a la placa y carga el código.

Programa Arduino para pantalla 7 segmentos y 4 dígitos

#define g  11
#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

void setup() {
   pinMode(g, OUTPUT);
   pinMode(d1, OUTPUT);
   pinMode(d2, OUTPUT);
   pinMode(d3, OUTPUT);
   pinMode(d4, OUTPUT);

   digitalWrite(d1, HIGH);
   digitalWrite(d2, HIGH);
   digitalWrite(d3, HIGH);
   digitalWrite(d4, HIGH);

   digitalWrite(g, HIGH);
   delay(1000);
}

void loop() {
   digitalWrite(d1, LOW);
   digitalWrite(d4, HIGH);
   delay(200);
   digitalWrite(d2, LOW);
   digitalWrite(d1, HIGH);
   delay(200);
   digitalWrite(d3, LOW);
   digitalWrite(d2, HIGH);
   delay(200);
   digitalWrite(d4, LOW);
   digitalWrite(d3, HIGH);
   delay(200);
}

Explicación sketch para pantalla 7 segmentos y 4 dígitos:

  1. en el bucle void setup, hemos aplicado una tensión a los cuatro dígitos del indicador LED para que no se enciendan inicialmente al arrancar el programa;
  2. en el bucle void loop iluminamos los dígitos uno a uno (la iluminación se realiza en modo BAJO), mientras que el segmento G permanece siempre iluminado.

En el siguiente ejemplo, construiremos un circuito – un temporizador Arduino con un indicador LED de cuatro dígitos y siete segmentos. Antes de cargar el sketch, necesitas conectar el botón del temporizador al pin A0 e instalar la librería en el IDE de Arduino TaimerOne.h. El temporizador sólo se pone en marcha cuando se pulsa el botón y cuando se suelta el botón el temporizador se detiene y se reinicia cuando se vuelve a pulsar.

Cronómetro en pantalla Arduino de 4 dígitos y 7 segmentos
Cronómetro en pantalla Arduino de 4 dígitos y 7 segmentos

Programa Arduino para cronómetro en pantalla de 4 dígitos

#include "TimerOne.h"
#define a 5
#define b 6
#define c 7
#define d 8
#define e 9
#define f 10
#define g 11

#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

long n = 0;
int x = 100;
int count = 0;

void setup() {
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);

  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  
  pinMode(A0, INPUT);

  Timer1.initialize(100000);
  Timer1.attachInterrupt( add );
}

void loop() {
  while (digitalRead(A0) == LOW) {
    clearLEDs();
    pickDigit(0);
    pickNumber((n / 1000));
    delay(5);

    clearLEDs();
    pickDigit(1);
    pickNumber((n % 1000) / 100);
    delay(5);

    clearLEDs();
    pickDigit(2);
    pickNumber(n % 100 / 10);
    delay(5);

    clearLEDs();
    pickDigit(3);
    pickNumber(n % 10);
    delay(5);
  }
  if (digitalRead(A0) == HIGH) { n = 0; count = 0; }
}

void pickDigit(int x) {
  digitalWrite(d1, HIGH);
  digitalWrite(d2, HIGH);
  digitalWrite(d3, HIGH);
  digitalWrite(d4, HIGH);
  switch (x) {
    case 0: digitalWrite(d1, LOW);  break;
    case 1: digitalWrite(d2, LOW);  break;
    case 2: digitalWrite(d3, LOW);  break;
    default: digitalWrite(d4, LOW); break;
  }
}

void pickNumber(int x) {
  switch (x) {
    default: zero();   break;
    case 1: one();     break;
    case 2: two();     break;
    case 3: three();  break;
    case 4: four();    break;
    case 5: five();     break;
    case 6: six();       break;
    case 7: seven(); break;
    case 8: eight();  break;
    case 9: nine();   break;
  }
}

void clearLEDs() {
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void zero() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}

void one() {
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void two() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}

void three() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}

void four() {
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void five() {
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void six() {
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void seven() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void eight() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void nine() {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}

void add() {
  count ++;
  if (count == 10) {
    count = 0;  n++;
    if (n == 10000) { n = 0; }
  }
}

Explicación sketch para cronómetro en pantalla de 4 dígitos:

  1. el bucle void add cuenta los segundos. Cuando el primer dígito del display de cuatro dígitos se desborda (el recuento de la variable se hace mayor que 9) – el contador se incrementa en uno.

Conclusión. Arduino display 7 segmentos 4 dígitos datasheet, como conectar un display de 7 segmentos 4 digitos. Si el objetivo de nuestro proyecto es mostrar la temperatura o mostrar la hora en un dispositivo, necesitaremos una pantalla de varios dígitos o varios dispositivos de un solo dígito. Una pantalla de 7 segmentos puede mostrar números del 0 al 9, así como algunas letras, con un uso mixto de mayúsculas y minúsculas.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *