Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lab N2 Optv-Informatica
Lab N2 Optv-Informatica
CONOCIMIENTO TEORICO
Display 7 segmentos, el componente electrónico
Siempre que nos enfrentemos a un nuevo componente, es recomendable documentarse. Para
ello tenemos las hojas de características técnicas o datasheet. Todo dependerá del modelo de display
LED 7 segmentos. Pero, ¿cómo puedes saber que modelo tienes? Todos los componentes suelen
tener una numeración inscrita en alguna parte.
Solo tenemos que descubrirla y meter esa numeración en Google seguido de datasheet. Esto
nos mostrará una serie de páginas donde encontramos información muy valiosa. Para este caso
usaremos el display 7 segmentos es el 5101AS.
De los resultados obtenidos nos vamos a uno de ellos (preferible buscar en algún PDF) y
miramos que características tiene este componente. Pero ojo, no nos debemos fiar siempre de lo que
nos diga Google. En algunos casos, encontramos cosas que están erróneas. Hay varias páginas
donde nos ofrecen fichas técnicas de componentes. Dos de las más famosas son Datasheet Catalog y
All Datasheet.
Analizando el display de 7 segmentos
Un display 7 segmentos es un componente que tiene 7 segmentos LEDs, más un LED que
hará de punto. Este punto nos indica cómo hay que colocar el display, y siempre irá hacia abajo. Por
lo tanto, debemos trabajar como si tuviéramos 7 LEDs conectados a nuestro Arduino.
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, y en los
segundos, que todos los LEDs comparten un mismo cátodo. Veremos más adelante un esquema de
cada uno de ellos y cómo identificarlos.
Relación pines del display de 7 segmentos con los LEDs
Dentro del datasheet, encontrarás un dibujo parecido al que te muestro a continuación.
Pines Segmentos
1 e
2 d
4 c
6 b
7 a
9 f
10 g
Tabla 1.1 – Relación de segmentos con los pines de un display de 7 segmentos
¿Y qué pasa con el resto de pines? Nos quedan por saber qué hacer con los pines 3, 5 y 8.
¿Te acuerdas que hemos visto que hay un punto para indicar la orientación del display 7 segmentos?,
pues este va conectado al pin número 5.
Los otros dos pines funcionarán como cátodo o ánodo, dependiendo del tipo de display de 7
segmentos con el que estemos trabajando. Solo debemos utilizar una de esas dos conexiones, se trata
de pines redundantes.
Al final, la tabla que relaciona los pines con los LEDs quedaría de la siguiente manera.
Pines Segmentos
1 e
2 d
3 Ánodo/Cátodo común
4 c
5 DP (Punto)
6 b
7 a
8 Ánodo/Cátodo común
9 f
10 g
Tabla 1.2 – Pines y segmentos de un display de 7 segmentos
Como estos tienen una relación con los pines de Arduino, solo tendríamos que poner en
estado alto (HIGH) o bajo (LOW) esos pines (en la siguiente sección veremos los tipos de displays
que tenemos a nuestra disposición). Todo esto lo haremos a nivel de programación. En el ejemplo de
código, podrás ver cómo se hace.
Comenzamos con una buena práctica. Declarar todas las constantes que relacionan los pines
con los componentes. En este caso solo vamos a declarar una constante, el pulsador.
// Constantes pines
#define PULSADOR 2
Para los pines del display 7 segmentos, vamos a utilizar un array multidimensional. Lo
primero es saber qué es un array o matriz. Este tipo de variables nos permite agrupar datos del
mismo tipo.
Cuando hablo de array multidimensional, quiero decir que tendremos un array de arrays. Es
sencillo, cada elemento del array principal es otro array. En este caso tendremos profundidad de 2,
pero podríamos tener más profundidad.
Este tipo de arrays, donde tenemos 2 dimensiones, lo podemos ver como una tabla. Para
acceder a un elemento tenemos que indicar la fila y la columna donde se encuentra dicho elemento.
Esto viene indicado por el valor entre corchetes [columna] [fila].
En este caso crearemos un array con 10 elementos que serían los 10 números posibles, del 0
al 9. Cada elemento contendrá 1 array de 8 elementos que serían los pines a los que está conectado
el display de 7 segmentos (7 para cada segmento y el punto).
Este array solo sirve para cátodo común. Si tenemos el otro tipo de display 7 segmentos,
debemos cambiar los unos por los ceros y los ceros por unos.
Función setup
En esta función tenemos que establecer las condiciones iniciales. Lo primero es iniciar el
monitor serie.
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
Luego seguimos con los segmentos del display. Hay que poner todos los pines donde está
conectado (del 2 al 9) en modo salida (OUTPUT). Podemos hacerlo de dos maneras, hacerlo de uno
a uno o con un bucle. La dificultad de este bucle es que no debemos empezar por el cero. Los pines
que utilizamos son del 2 al 9, haremos un bucle que recorra todos estos números.
Dentro utilizaremos la variable del bucle como número de pin. Es muy sencillo, lo puedes
comprobar a continuación.
Por último, establecemos la semilla fija para obtener el valor aleatorio a través de la función
random. Esta semilla será una entrada analógica.
Función loop
Ahora vamos con la parte que se repite constantemente. Como hemos visto en la descripción
del algoritmo, lo primero es leer el pin digital donde tenemos conectado el pulsador. Luego
comprobamos si está en estado alto (pulsado).
void loop() {
// Leemos el valor del pulsador
int valor = digitalRead(PULSADOR);
// Si está pulsado
if (valor == HIGH)
{
Una vez que estemos seguro que se ha pulsado es cuando empezamos la secuencia de
obtener un número aleatorio entre 1 y 6, con la función random, y mostramos el número que ha
salido. La función random (min, max) admite dos parámetros el mínimo y el máximo.
Este máximo es exclusivo lo que quiere decir que debemos elegir el número entero superior
al número máximo que queremos elegir. En nuestro caso sería random(1,7) para elegir un número
entre 1 y 6.
//Genera un numero aleatorio entre 1 y 6
int randomNumber = random(1, 7);
delay(500);
}
}
Código completo
A continuación, se muestra todo el código para que lo puedas copiar fácilmente.
// Constantes pines
#define PULSADOR 2
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
void loop() {
// Leemos el valor del pulsador
int valor = digitalRead(PULSADOR);
// Si está pulsado
if (valor == HIGH)
{
delay(500);
}
}