Buenas!
En esta entrada vamos a intentar aprender cómo usar un display de 7 segmentos de ánodo común
Si se adquiere este componente por internet podremos saber si es de ánodo común o de cátodo común buscando por internet la referencia que viene impresa en el dispositivo seguida de la palabra datasheet.
En nuestro caso, esta es la información que hemos recopilado:
Model : 5161BS
Size : 0.56-inch
Emitting color : Red (Ultra-Bright )
Mode : Common-Anode (CA)
Digit : Single Digit
Category : LED 7-Segment Display
Maker : XLITX Technology
Es de Ánodo común, pero ¿qué significa esto? Vamos a intentar averiguarlo a continuación.
Descripción del módulo
![]() |
Detalle del display de un dígito de 7 segmentos |
El display de 7 segmentos como se aprecia en la imagen es un concentrado con varias barras de leds que al encenderse pueden identificarse con un número del 0 al 9 (nombrarse con un número del 1 al 10). Los leds recordemos que se encuentran conformados por un ánodo (parte positiva) y un cátodo (parte negativa). El módulo de display de 7 segmentos tiene un led común que en función del dispositivo que compremos funcionará como ánodo o como cátodo común y al que se conectan el resto de los leds.
Si el display de 7 segmentos es de ánodo común los pines serán los cátodos y en caso de tratarse de un display de cátodo común los pines serán los ánodos.
Es decir, existen dos tipos de displays de 7 segmentos, los de ánodo común y los de cátodo común. Esto quiere decir que en los primeros, todos los LEDs comparten un mismo ánodo ( polo +), y en los segundos, que todos los LEDs comparten un mismo cátodo.
Esto se traduce en que si disponemos de un display del tipo cátodo común un valor HIGH encenderá el segmento y un valor LOW (0) lo apagará . Es decir en los de cátodo común, se aplica un voltaje bajo al terminal común del display y un voltaje alto a cada segmento para su iluminación. En nuestro proyecto con este modelo de ánodo común necesitaremos un valor LOW para encender el segmento y un valor HIGH para apagarlo, el terminal común del display que funciona como ánodo común se alimentará con la salida VCC de Arduino, y sobre cada segmento se aplicará una resistencia de 220 ohms para reducir el voltaje.
La diferencia entre un cátodo común y un ánodo común estriba en el flujo de la corriente. Con un cátodo común los pins necesitarán proporcionar corriente, con un ánodo común los pins necesitarán recibir corriente.
Cada led del display se identifica con una letra y cada pin del led está asociado a esa letra tal y como hemos visto en la imagen anterior, y que se resume en la siguiente tabla
Pines del display | Segmentos |
1 | E |
2 | D |
3 | Ánodo/Cátodo común redundante |
4 | C |
5 | DP (Punto Decimal) |
6 | B |
7 | A |
8 | Ánodo/Cátodo común redundante |
9 | F |
10 | G |
De tal manera que para producir el número cero en el display deberemos encender todos los leds a excepción del DP , por ejemplo, como se muestra en la imagen. Los pines 3 y 8 son redundantes y hacen referencia al ánodo o cátodo común según el tipo de módulo que tengamos en nuestro proyecto.
Diagrama de conexión
Nuestro display de ánodo común es el de la derecha en la siguiente imagen, la conexión GND es común a todos los leds
Recordar que todos los LEDs necesitan una resistencia que limite la intensidad de la corriente recibida o entregada para prevenir que se deterioren o exploten.
![]() |
Diagrama de conexión display 7 segmentos cátodo común |
Es decir hemos configurado la siguiente conexión con Arduino
Pines de Arduino seleccionados | Segmentos y pines Display |
2 | B (pin 6 display) |
3 | A (pin 7 display) |
VCC | Ánodo/Cátodo común redundante (pin 3 display) |
4 | C (pin 4 display) |
- | DP (Punto Decimal, pin 5 display) |
11 | E (pin 1 display) |
12 | F (pin 9 display) |
VCC | Ánodo/Cátodo común redundante (pin 8 display) |
13 | G (pin 10 display) |
Código
#define PIN3 3
#define PIN4 4
#define PIN10 10
#define PIN11 11
#define PIN12 12
#define PIN13 13
/*
PIN ard - pin display
2 B (pin 6 display)
3 A (pin 7 display)
VCC Ánodo/Cátodo común redundante (pin 3 display)
4 C (pin 4 display)
- DP (Punto Decimal, pin 5 display)
11 E (pin 1 display)
12 F (pin 9 display)
VCC Ánodo/Cátodo común redundante (pin 8 display)
13 G (pin 10 display)
*/
long randomNumber;
byte segment_ard_corr_array[7]= {3,2,4,11,10,12,13};
//,a,b,c,d,e,f,g
byte segment_num_array[10][7] = { { 0,0,0,0,0,0,1 }, // 0
{ 1,0,0,1,1,1,1 }, // 1
{ 0,0,1,0,0,1,0 }, // 2
{ 0,0,0,0,1,1,0 }, // 3
{ 1,0,0,1,1,0,0 }, // 4
{ 0,1,0,0,1,0,0 }, // 5
{ 0,1,0,0,0,0,0 }, // 6
{ 0,0,0,1,1,1,1 }, // 7
{ 0,0,0,0,0,0,0 }, // 8
{ 0,0,0,1,1,0,0 }}; // 9
void setup() {
// put your setup code here, to run once:
pinMode(PIN2,OUTPUT);
pinMode(PIN3,OUTPUT);
pinMode(PIN4,OUTPUT);
pinMode(PIN10,OUTPUT);
pinMode(PIN11,OUTPUT);
pinMode(PIN12,OUTPUT);
pinMode(PIN13,OUTPUT);
randomSeed(analogRead(A0));
}
void loop() {
//compruebaLedsCorrespondencia();
SecuenciaEnteros09(1);
SecuenciaEnteros09(0);
SecuenciaRandom();
}
void SecuenciaRandom(){
for(int i=0;i<10;i++){
randomNumber = random(1,9);
Num_Write(randomNumber);
delay(800);
}
}
void SecuenciaEnteros09(byte sentido)
{
byte i;
if(sentido==1){//ascendente
for(i=0;i<10;i++){
Num_Write(i);
delay(800);
}
}
else {
if(sentido==0){
for(i=10;i>0;i--){
Num_Write(i-1);
delay(800);
}
}
}
}
void Num_Write(byte number)
{
int pin= 2;
for (int j=0; j < 7; j++) {
digitalWrite(segment_ard_corr_array[j], segment_num_array[number][j]);
}
}
void compruebaLedsCorrespondencia(){
byte i;
for(i=0;i<7;i++)
{
digitalWrite(segment_ard_corr_array[i],HIGH);
delay(600);
}
for(i=0;i<7;i++)
{
digitalWrite(segment_ard_corr_array[i],LOW);
delay(600);
}
}
Referencias
- https://www.digikey.com/en/maker/projects/how-to-interface-a-seven-segment-display-with-an-arduino/9c05f147618c4fe3b8bb79acce5c60e3
- https://arduino.stackexchange.com/questions/70571/7-segment-display-with-common-anode
- https://www.electronicwings.com/arduino/7-segment-display-interfacing-with-arduino-uno