ARDUINO 012 MOSTRAR INFORMACIÓN EN UN DISPLAY DE 7 SEGMENTOS

MOSTRAR INFORMACIÓN EN UN DISPLAY DE 7 SEGMENTOS
Un display es un componente capaz de mostrar un número encendiendo y apagando diferentes segmentos para cada número. Internamente está formado por 7 leds a los que se nombra con las letras a, b, c, d, e, f, g.   Hay dos tipos de displays:
· De cátodo (-) común. Todos los leds tienen sus cátodos (-) unidos al pin COM del display, donde se conecta la resistencia de protección, y esta a GND. Utiliza 7 cables para conectar los 7 ánodos (+) a 7 pines diferentes de Arduino. Para encender un segmento debemos escribir digitalWrite(pin, HIGH);
· De ánodo (-) común. Todos los leds tienen sus ánodos (+) unidos al pin COM, donde se conecta la resistencia de protección y esta a +5 voltios. Utiliza 7 cables para conectar los 7 cátodos (-) a 7 pines diferentes de Arduino.  Para encender un segmento se debe escribir digitalWrite(pin,LOW);

PASO 1. Realiza el montaje del display en la placa tal y como se muestra en el siguiente esquema, donde se ha usado un display de ánodo (+) común.
PASO 2. Hacer que cuente hacia atrás y hacia adelante

/* Mostrar información en un display de 7 segmentos */
#define Pin_a 3
#define Pin_b 4
#define Pin_c 7
#define Pin_d 6
#define Pin_e 5
#define Pin_f 2
#define Pin_g 1

void setup() {
    pinMode(Pin_a, OUTPUT);
    pinMode(Pin_b, OUTPUT);
    pinMode(Pin_c, OUTPUT);
    pinMode(Pin_d, OUTPUT);
    pinMode(Pin_e, OUTPUT);
    pinMode(Pin_f, OUTPUT);
    pinMode(Pin_g, OUTPUT); 
}

void loop() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, HIGH);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, LOW); 
}

void cero() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, LOW);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, HIGH); 
}

void uno() {
    digitalWrite(Pin_a, HIGH);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, HIGH);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, HIGH);
    digitalWrite(Pin_g, HIGH); 
}

void dos() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, HIGH);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, LOW);
    digitalWrite(Pin_f, HIGH);
    digitalWrite(Pin_g, LOW); 
}

void tres() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, HIGH);
    digitalWrite(Pin_g, LOW); 
}

void cuatro() {
    digitalWrite(Pin_a, HIGH);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, HIGH);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, LOW); 
}

void cinco() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, HIGH);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, LOW); 
}

void seis() {
    digitalWrite(Pin_a, HIGH);
    digitalWrite(Pin_b, HIGH);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, LOW);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, LOW); 
}

void siete() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, HIGH);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, HIGH);
    digitalWrite(Pin_g, HIGH); 
}

void ocho() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, LOW);
    digitalWrite(Pin_e, LOW);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, LOW); 
}

void nueve() {
    digitalWrite(Pin_a, LOW);
    digitalWrite(Pin_b, LOW);
    digitalWrite(Pin_c, LOW);
    digitalWrite(Pin_d, HIGH);
    digitalWrite(Pin_e, HIGH);
    digitalWrite(Pin_f, LOW);
    digitalWrite(Pin_g, LOW); 
}














OTRO EJERCICIO

Arduino display 7 segmentos ánodo común

En un post pasado conectamos un display de ánodo común y visualizamos los números de 0 al 9, esto con la ayuda del circuito 7447, el cual es un decodificador de 4 bits. Lo que vamos a hacer el usar el display 7 segmentos con el arduino, realizaremos la conexión directa y programaremos cada uno de los dígitos correspondientes.

Contenido

Display 7 segmentos

Es un elemento para visualización de números y letras en electrónica, cada segmento esta hecho de un material que emite luz, los segmentos se organizan o se designan como se muestra en la siguiente imagen.
Existen dos tipos de display de 7 segmentos, su principal diferencia es la conexión de los pines que están asociados a los segmentos, estos dos tipos se conocen como Anodo común y Catodo común.

Display de cátodo común

El display cátodo común es aquel que tiene el pin común conectado a los negativos de los LED’s (cátodo). Esto significa que este tipo de display se “controla” con ‘1’ lógico o con voltaje positivo.

Display de ánodo común

El display ánodo común es aquel cuyos ánodos están conectados al mismo punto. Este tipo de display es controlado por ceros (0).

Conexión del circuito

Materiales

MateriaCantidadDescripción
Display 7 segmentos ánodo común1Visualizaremos los digitos del 0 al 9
Arduino uno1Controlador para el display
Resistencias de 1k7Las usaremos para proteger las entradas y los leds de display
Cables macho a macho7Los usaremos para la conexión

Código

El codigo lo tenemos en el repositorio de github en la sección arduino code.
//Paso 1
const int pins[7] = { 2, 3, 4, 5, 6, 7, 8 }; 

//Paso 2
const byte numbersDisplayAnode[10] = {0b1000000,     //0
                          0b1111001,          //1
                          0b0100100,          //2
                          0b0110000,          //3
                          0b0011001,          //4
                          0b0010010,          //5
                          0b0000010,          //6
                          0b1111000,          //7
                          0b0000000,          //8
                          0b0010000};         //9

void setup() {
  //Paso 3
  for(int i = 0; i < 7; i++) {
    pinMode(pins[i], OUTPUT);  
  }

  //Paso 5
  lightSegments(0);
}

void loop() {
  //Paso 6
  for(int i = 0; i < 10; i++) {
    lightSegments(i);
    delay(1000);
  }
}

//Paso 4
void lightSegments(int number) {
  byte numberBit = numbersDisplayAnode[number];
  for (int i = 0; i < 7; i++)  {
    int bit = bitRead(numberBit, i);
    digitalWrite(pins[i], bit);
  }
}
A continuacion explicamos cada uno de los padod que se esta realizando.
  1. Creamos la variable pins tipo array entero, la cual almacenara los pines que se conectan al display.
  2. Declaramos la variable numbersDisplayAnode de tipo array de byte, donde se alacenaran los bits correspondientes a los segmentos de los números.
  3. Colocamos los pines de la variable pins como salida usado la función pinMode.
  4. Creamos la función lightSegments() donde usara la función bitRead para el bit de numbersDisplayAnode en la posición del pin que esta asociado al segmento correspondiente.

Vídeo del circuito

A continuación encontraras un vídeo en donde se explica al detalle el circuito.


    




No hay comentarios:

Publicar un comentario