Un display es un componente capaz de mostrar un número encendiendo y apagando diferentes segmentos para cada número. Internamente está formado por 7 leds a los que se nombra con las letras a, b, c, d, e, f, g. Hay dos tipos de displays:
· De cátodo (-) común. Todos los leds tienen sus cátodos (-) unidos al pin COM del display, donde se conecta la resistencia de protección, y esta a GND. Utiliza 7 cables para conectar los 7 ánodos (+) a 7 pines diferentes de Arduino. Para encender un segmento debemos escribir digitalWrite(pin, HIGH);
· De ánodo (-) común. Todos los leds tienen sus ánodos (+) unidos al pin COM, donde se conecta la resistencia de protección y esta a +5 voltios. Utiliza 7 cables para conectar los 7 cátodos (-) a 7 pines diferentes de Arduino. Para encender un segmento se debe escribir digitalWrite(pin,LOW);
PASO 1. Realiza el montaje del display en la placa tal y como se muestra en el siguiente esquema, donde se ha usado un display de ánodo (+) común.
PASO 2. Hacer que cuente hacia atrás y hacia adelante
/* Mostrar información en un display de 7 segmentos */
#define Pin_a 3
#define Pin_b 4
#define Pin_c 7
#define Pin_d 6
#define Pin_e 5
#define Pin_f 2
#define Pin_g 1
void setup() {
pinMode(Pin_a, OUTPUT);
pinMode(Pin_b, OUTPUT);
pinMode(Pin_c, OUTPUT);
pinMode(Pin_d, OUTPUT);
pinMode(Pin_e, OUTPUT);
pinMode(Pin_f, OUTPUT);
pinMode(Pin_g, OUTPUT);
}
void loop() {
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, HIGH);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, LOW);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, HIGH);
}
digitalWrite(Pin_a, HIGH);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, HIGH);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, HIGH);
digitalWrite(Pin_g, HIGH);
}
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, HIGH);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, LOW);
digitalWrite(Pin_f, HIGH);
digitalWrite(Pin_g, LOW);
}
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, HIGH);
digitalWrite(Pin_g, LOW);
}
digitalWrite(Pin_a, HIGH);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, HIGH);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, HIGH);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
void seis() {
digitalWrite(Pin_a, HIGH);
digitalWrite(Pin_b, HIGH);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, LOW);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
digitalWrite(Pin_a, HIGH);
digitalWrite(Pin_b, HIGH);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, LOW);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
void siete() {
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, HIGH);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, HIGH);
digitalWrite(Pin_g, HIGH);
}
void ocho() {
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, LOW);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
void nueve() {
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, HIGH);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, HIGH);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, HIGH);
digitalWrite(Pin_g, HIGH);
}
void ocho() {
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, LOW);
digitalWrite(Pin_e, LOW);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
void nueve() {
digitalWrite(Pin_a, LOW);
digitalWrite(Pin_b, LOW);
digitalWrite(Pin_c, LOW);
digitalWrite(Pin_d, HIGH);
digitalWrite(Pin_e, HIGH);
digitalWrite(Pin_f, LOW);
digitalWrite(Pin_g, LOW);
}
OTRO EJERCICIO
Arduino display 7 segmentos ánodo común
En un post pasado conectamos un display de ánodo común y visualizamos los números de 0 al 9, esto con la ayuda del circuito 7447, el cual es un decodificador de 4 bits. Lo que vamos a hacer el usar el display 7 segmentos con el arduino, realizaremos la conexión directa y programaremos cada uno de los dígitos correspondientes.
Contenido
Display 7 segmentos
Es un elemento para visualización de números y letras en electrónica, cada segmento esta hecho de un material que emite luz, los segmentos se organizan o se designan como se muestra en la siguiente imagen.
Display 7 segmentos conexión
Existen dos tipos de display de 7 segmentos, su principal diferencia es la conexión de los pines que están asociados a los segmentos, estos dos tipos se conocen como Anodo común y Catodo común.
Display de cátodo común
El display cátodo común es aquel que tiene el pin común conectado a los negativos de los LED’s (cátodo). Esto significa que este tipo de display se “controla” con ‘1’ lógico o con voltaje positivo.
Display 7 segmentos cátodo cómun
Display de ánodo común
El display ánodo común es aquel cuyos ánodos están conectados al mismo punto. Este tipo de display es controlado por ceros (0).
Display 7 segmentos ánodo cómun
Conexión del circuito
Conexión display 7 segmentos ánodo cómun
Esquema display 7 segmentos ánodo cómun
Materiales
Materia | Cantidad | Descripción |
---|---|---|
Display 7 segmentos ánodo común | 1 | Visualizaremos los digitos del 0 al 9 |
Arduino uno | 1 | Controlador para el display |
Resistencias de 1k | 7 | Las usaremos para proteger las entradas y los leds de display |
Cables macho a macho | 7 | Los usaremos para la conexión |
Código
El codigo lo tenemos en el repositorio de github en la sección arduino code.
//Paso 1
const int pins[7] = { 2, 3, 4, 5, 6, 7, 8 };
//Paso 2
const byte numbersDisplayAnode[10] = {0b1000000, //0
0b1111001, //1
0b0100100, //2
0b0110000, //3
0b0011001, //4
0b0010010, //5
0b0000010, //6
0b1111000, //7
0b0000000, //8
0b0010000}; //9
void setup() {
//Paso 3
for(int i = 0; i < 7; i++) {
pinMode(pins[i], OUTPUT);
}
//Paso 5
lightSegments(0);
}
void loop() {
//Paso 6
for(int i = 0; i < 10; i++) {
lightSegments(i);
delay(1000);
}
}
//Paso 4
void lightSegments(int number) {
byte numberBit = numbersDisplayAnode[number];
for (int i = 0; i < 7; i++) {
int bit = bitRead(numberBit, i);
digitalWrite(pins[i], bit);
}
}
A continuacion explicamos cada uno de los padod que se esta realizando.
- Creamos la variable
pins
tipo array entero, la cual almacenara los pines que se conectan al display. - Declaramos la variable
numbersDisplayAnode
de tipo array de byte, donde se alacenaran los bits correspondientes a los segmentos de los números. - Colocamos los pines de la variable pins como salida usado la función
pinMode
. - Creamos la función
lightSegments()
donde usara la funciónbitRead
para el bit de numbersDisplayAnode en la posición del pin que esta asociado al segmento correspondiente.
Vídeo del circuito
A continuación encontraras un vídeo en donde se explica al detalle el circuito.
No hay comentarios:
Publicar un comentario