a b c d e f g p
2 0 0 1 0 0 1 1 0
8 0 0 0 0 0 0 0 0
L 1 1 1 0 0 0 1 0
A 0 0 0 1 0 0 0 0
|
/*
* display2.ino
* Visualiza el número 2 en el dígito más a la izquierda del display
* de 7 segmentos.
* Los leds del display se encienden con un cero y se apagan con un 1.
* El código del numero 2 sería: a b c d e f g p
* 0 0 1 0 0 1 0 1
* Arduino envía los datos (DATA) al shield multifunción en serie, usando
* el pin 7. A través del pin 8 manda unos pulsos de "reloj" (CLOCK)para
* indicar la validez de los datos presentes en el pin 7. Por último, el
* pin 4 sirve de cerrojo (LATCH), para que el shield multifunción sepa
* cuando empieza y termina la transmisión de datos.
* Hay que enviar dos números: el primero se corresponde con el código
* 7 segmentos que queremos visualizar, el segundo indica (con un 1) el
* dígito que estará encendido.
*/
void setup (){
pinMode(4,OUTPUT); //LATCH, habilita recepción de datos
pinMode(7,OUTPUT); //DATA, para enviar los datos
pinMode(8,OUTPUT); //CLOK, indica cuando los datos son válidos
}
void loop(){
digitalWrite(4,LOW); //Un 0 habilita la llegada de datos
shiftOut(8, 7, LSBFIRST, B00100101); //envía el código 7 segmentos
shiftOut(8, 7, LSBFIRST, B10000000); //envía el dígito que se enciende
digitalWrite(4,HIGH); //Un 1 deshabilita la transmisión
}
Ahora vamos a mostrar el número "0134"; primero dígito a dígito y, posteriormente, con una pequeña modificación, los veremos los cuatro a la vez.
/*
* display0134.ino
* Vemos en el display los números 0, 1, 3 y 4, de uno en uno
* a intervalos de 1 segundo. Cada número aparece en un dígito
* diferente, el 0 en el más a la izquierda.
* Para ver el número completo 0134 a la vez, tenemos que quitar
* los retardos (delay) de 1 segundo. Se sigue encendiendo un solo
* dígito, pero al no haber retardos y estar en un bucle que se
* repite rapidísimamente nuestros ojos los ven todos encendidos.
*/
void setup (){
pinMode(4,OUTPUT); //LATCH
pinMode(7,OUTPUT); //DATA
pinMode(8,OUTPUT); //CLOCK
}
void loop(){
digitalWrite(4,LOW);
shiftOut(8, 7, LSBFIRST, B00000011); //el 0
shiftOut(8, 7, LSBFIRST, B10000000); //en el dígito de la izquierda
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
shiftOut(8, 7, LSBFIRST, B10011111); //el 1
shiftOut(8, 7, LSBFIRST, B01000000); //en el siguiente dígito
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
shiftOut(8, 7, LSBFIRST, B00001101); //el 3
shiftOut(8, 7, LSBFIRST, B00100000); //en el siguiente dígito
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
shiftOut(8, 7, LSBFIRST, B10011001); //el 4
shiftOut(8, 7, LSBFIRST, B00010000); //en el último de la derecha
digitalWrite(4,HIGH);
delay(1000); //quitar todos los delay
//para ver los cuatro a la vez
}
Ejercicios propuestos:
1.- Escribir un programa que haga aparecer en el display (en el dígito más a la derecha) los números del 0 al 5 a intervalos de un segundo.




