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.

jueves, 6 de marzo de 2014

Primer ejercicio, led parpadeante

Conexión
Habrá que tener en cuenta que el pin que va cargado es el 13, por lo



Programa:

Primero debemos siempre seleccionar el tipo de tarjeta que tengamos para arrancarlo por primera vez



 Posteriormente hemos elegido comenzar con el programa que viene por defecto, y, dentro de él, analizar el programa.




El código queda:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {               
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}
 Como podemos ver lo que realizará es un encendido y apagado constante de un segundo en el pin13.


El funcionamiento es sencillo, al principio se seleciona la salida(int led = 13;), a tener en cuenta que de elegir otra habrá que añadir una resistencia(en esta salida viene incorporada de serie)

Lo segundo
 void setup() {               
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
}
 Esta secuencia le comunica a la constante que es una salida

Y la parte de accionamiento

void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}
 Como se ve, pone el led a encendido(digitalWrite(led,HIHG)), espera un segundo(delay(1000)), apaga el led y espera otro segundo.


 Os subiré mañana un video
EDITO:
Aquí esta lo prometido



Un saludo