El dia de hoy tenemos un tutorial muy simple para manejar un display 7 segmentos en arduino con ayuda de un decoder de BCD a 7 segmentos, esto es muy util cuando no queremos o podemos mandar la señal a todos los pines del 7 segmentos. Este modelo funciona para display de catodo comun, en caso de querer utilizar anodo comun, pueden recurrir al modelo 74ls47, la idea es la misma.
El decoder trabaja de manera sencilla, le mandamos el numero que deseamos desplegar en binario y el se encarga de convertirlo a decimal en nuestro 7 segmentos, como tenemos 4 entradas en el (A B C D) tenemos un numero binario de 4 bits, es decir podemos visualizar del 0 al 15, obviamente del 10 al 15 se simboliza de diferente manera en el 7 segmentos, aquí dejo la imagen, igual se puede encontrar en el datasheet del 74ls48.
la conexion es muy intuitiva, vamos a conectar los pines a,b,c,d,e,f,g del 74ls48 al los respectivos del display 7 segmentos, las entradas A, B, C, D las conectaremos a los pines del arduino con los que los controlaremos, en nuestro caso los pines digitales 2, 3, 4, 5. Los pines del LT, BI/RBO, RBI los conectaremos a VCC con una resistencia de 10k, estos pines sirven para probar el display 7 segmentos.
Lo siguiente que necesitamos es el codigo:
--------------------------------------------------------------------------------------------------------------------------
//las entradas del 74ls48 van en orden DCBA es decir si queremos un 4 mandamos 0100
// Declaramos pines a usar para 74ls48
int A = 5;
int B = 4;
int C = 3;
int D = 2;
// configuramos pines como salidas
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
}
//programa principal
void loop() {
//Numero 0
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
delay(300);
//Numero 1
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
delay(300);
//Numero 2
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
delay(300);
//Numero 3
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
delay(300);
//Numero 4
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
delay(300);
//Numero 5
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
delay(300);
//Numero 6
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
delay(300);
//Numero 7
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
delay(300);
//Numero 8
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
delay(300);
//Numero 9
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
delay(300);
//Numero 10
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
delay(300);
//Numero 11
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
delay(300);
//Numero 12
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
delay(300);
//Numero 13
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
delay(300);
//Numero 14
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
delay(300);
//Numero 15
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
delay(300);
}
--------------------------------------------------------------------------------------------------------------------------
Es muy sencillo la verdad, basta con poner los pines que decidamos utilizar como salidas y ponerlos a HIGH o LOW dependiendo el numero que queramos visualizar, esta secuencia va del 0 a 15 con delay de 300ms entre cada numero para poder apreciar.
0 comentarios:
Publicar un comentario