miércoles, 26 de marzo de 2014

Display de 7 segmentos arduino cambiar numeros cada x tiempo

Segunda práctica, DISPLAY de 7 segmentos de ánodo común

Lo primero he encontrado una imagen para ver la diferencia de conexión entre un ánodo común y el cátodo común, creo que se entiende

imagen extraida de: http://picmind.es.tl/Conectando-Un-Display-7-Segmentos-A-Un-Pic.htm


Habrá que tener en cuenta que la resistencia siempre se pondrá en el común para que no necesitemos una por segmento.

Para realizarlos en orden, considero que lo mejor es que asignemos a cada salida el valor que tienen, aunque personalmente no me gusta usar el 0 y el 1 por si algún día quiero usar la conexión via pc.


Quedaría así, conectando el que no tiene número(ánodo común) a 5V, y en medio una resistencia de 300 Ohmnios





Explicaciones complementarias: Al estar cargado el ánodo con 5V, las salidas deberán marcar 0V(LOW) para que se encienda cada led, y 5V(HIGH) para que estén apagadas.

Programando:

/*
EJERCICIO NUMEROS DISPLAY 7 SEGMENTOS www.arduinofacill.blogspot.com
AUTOR: ASSM
LICENCIA: GNU
OBJETIVO: HACER LOS NÚMEROS DEL 0 AL 9 QUE SE VALLAN CAMBIANDO TRÁS UN TIEMPO(300 MILISEGUNDO)
 */


int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;
int led7 = 8;
int led8 = 9;
// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(led1, OUTPUT); // SUPERIOR DERECHA
  pinMode(led2, OUTPUT); // INFERIOR DERECHA
  pinMode(led3, OUTPUT); // INFERIOR
  pinMode(led4, OUTPUT); // INFERIOR IZQUIERDA
  pinMode(led5, OUTPUT); // SUPERIOR IZQUIERDA
  pinMode(led6, OUTPUT); // SUPERIOR
  pinMode(led7, OUTPUT); // CENTRAL
  pinMode(led8, OUTPUT); // PUNTO, NO USADO
}

void uno(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH); 
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);  
  digitalWrite(led5, HIGH);
  digitalWrite(led6, HIGH);
  digitalWrite(led7, HIGH);
  digitalWrite(led8, HIGH);
}

void dos(){
  digitalWrite(led1, LOW);  
  digitalWrite(led2, HIGH);  
  digitalWrite(led3, LOW);  
  digitalWrite(led4, LOW); 
  digitalWrite(led5, LOW); 
  digitalWrite(led6, LOW);
  digitalWrite(led7, HIGH);
  digitalWrite(led8, HIGH);   
 
}

void tres(){
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH); 
  digitalWrite(led3, LOW); 
  digitalWrite(led4, LOW);  
  digitalWrite(led5, HIGH); 
  digitalWrite(led6, LOW);  
  digitalWrite(led7, LOW);
  digitalWrite(led8, HIGH); 
 
}
void cuatro(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH); 
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  digitalWrite(led5, LOW);
  digitalWrite(led6, LOW);
  digitalWrite(led7, HIGH);
  digitalWrite(led8, HIGH);
 
}
void cinco(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  digitalWrite(led5, LOW); 
  digitalWrite(led6, HIGH); 
  digitalWrite(led7, HIGH); 
  digitalWrite(led8, HIGH); 
 
}
void seis(){
  digitalWrite(led1, HIGH);  
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);  
  digitalWrite(led4, LOW);  
  digitalWrite(led5, HIGH); 
  digitalWrite(led6, HIGH);
  digitalWrite(led7, HIGH); 
  digitalWrite(led8, HIGH); 
 
}
void siete(){
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW); 
  digitalWrite(led3, HIGH); 
  digitalWrite(led4, HIGH);  
  digitalWrite(led5, LOW);
  digitalWrite(led6, LOW);   
  digitalWrite(led7, HIGH); 
  digitalWrite(led8, HIGH);  
}
void ocho(){
  digitalWrite(led1, LOW);  
  digitalWrite(led2, LOW);   
  digitalWrite(led3, LOW);  
  digitalWrite(led4, LOW);  
  digitalWrite(led5, LOW); 
  digitalWrite(led6, LOW);   
  digitalWrite(led7, LOW);
  digitalWrite(led8, HIGH); 
 
}
void nueve(){
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW); 
  digitalWrite(led3, LOW);  
  digitalWrite(led4, LOW); 
  digitalWrite(led5, HIGH);
  digitalWrite(led6, LOW);
  digitalWrite(led7, LOW);
  digitalWrite(led8, HIGH);
 
}
void cero(){
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);  
  digitalWrite(led3, LOW); 
  digitalWrite(led4, LOW);
  digitalWrite(led5, LOW);
  digitalWrite(led6, LOW); 
  digitalWrite(led7, HIGH);
  digitalWrite(led8, HIGH); 
 
}
void loop() {
  uno();
  delay(400);
  dos();
  delay(400);
    tres();
  delay(400);
    cuatro();
  delay(400);
    cinco();
  delay(400);
    seis();
  delay(400);
    siete();
  delay(400);
    ocho();
  delay(400);
    nueve();
  delay(400);
    cero();
  delay(400);
}

Como se puede ver, cada número ha sido convertido en una función, según  los leds que deben quedar encendidos y posteriormente se ha llamado a cada número por su función.

El video que pongo no es el real, ya que se me ha estropeado el Display de 7 segmentos y un caracter, espero próximamente poneros este(de cuatro digitos) en funcionamiento con cuatro números, pero la idea era que se viese la idea.

No hay comentarios:

Publicar un comentario