Pages Menu
TwitterFacebook



BANNER1_ALT

Posted by on Mar 11, 2015 in Basicos generales | 10 comments

Contador de 0 a 9 con Arduino

Contador de 0 a 9 con Arduino

Contador de 0 a 9 con Arduino

En este tutorial aprendiendo como controlar un display de siete segmentos cátodo común el cual mostrara los números del 0 al 9 de manera secuencial por medio de registro de puertos

Material:

  • Arduino UNO
  • Display de 7 segmentos cátodo común
  • 7 resistencias 220ohm

En la tienda virtual de HeTPro puedes encontrar todos los manteriales: hetpro-store.com

Los controladores y software Arduino lo puedes encontrar en: www.arduino.cc

Registros de puertos

Estos registros nos permiten una manipulación más rápida de los pines de E/S de nuestro  Arduino UNO. El microcontrador de esta placa tiene tres puertos:

  •  pin digital de 8-13
  •  pines de entrada analógica
  •  pines digitales 0-7

Cada uno de estos puertos está controlado por tres registros los cuales se definen por DDR, PORT y PIN.

DDR

Determina si el pin es entrada o salida.

Ejemplo:

DDRD= B00001111;

Dónde:

D es el puerto a controlar

B indicamos que es el código binario

=entrada          1=salida

En este caso estamos declarando que la mitad de nuestro puerto  sea entrada y la otra parte salida, con esto evitamos escribir varias veces “pinMode(x,OUTPUT)” para declarar cada pin.

Tomando en cuenta que el primer número de la derecha es el menos significativo la relación de los pines será de la siguiente manera:

Numero insertado   0 0 0 0 1 1 1 1
Pin de Arduino   7 6 5 4 3 2 1 0

 

Si queremos hacerlo en forma decimal solo bastaría con 31 y esto sería igual a activar los primeros cuatro pines como salida DDRD=31 o DDRD=255 si queremos activar todo el puerto como salida.

PORT

Controlada si el pin esta en alto o bajo.

PORTD=10101010

Aquí asignamos que los pines 1, 3, 5, 7 estén en estado alto mientras que los pines 0, 2, 4, 6 están en estado bajo.

PIN

Lee el estado de los pines de entrada establecidos.

PIND

Se lee todo el puerto que se ha configurado como entrada. Este registro nos da un 1 si a un pin del microcontrolador se le está alimentando externamente, y un cero si esta en nivel bajo de voltaje.

Display 7 segmentos

En display  no es más que siete LEDs que nos sirve para mostrar números o caracteres encendiendo o apagando cada uno ellos. A cada uno de los LEDs se le denomina segmento,  los cuales para activarlos basta con  conectar el común a tierra y voltaje en el segmento que deseemos activar (en este caso que es cátodo común).

diagrama_7seg

diagrama display 7 segmentos

 

Para poder representar los números es necesario generar una tabla con la relación de LEDs encendidos y apagados e cada numero. Por ejemplo:

Para mostrar el número 4 apagamos los segmentos A, D,y E por ellos los marcamos con un cero y todos los demás en uno.

contador de 0 a 9

numero cuatro en 7 segmentos

 

Una ves que tengamos nuestra tabla el código binario obtenido lo convertimos a base HEXADECIMAL para colocar este valor en la programación de Arduino tomando en cuenta el Pin 6/A como el más significativo.

tabla

tabla para el contador de 0 a 9

 

Conexión: display  7 segmentos

Para realizar la conexión colocamos de cada una de nuestras salidas de Arduino una resistencia de 220ohms en serie a los segmentos del Display.

diagrama

Diagrama de conexion para el contador de 0 a 9

 

 

Código

void setup()
{
DDRD=255; //se declara todo el puerto como salida
}
void loop()
{
  //al puerto "D" le asignamos los valores obtenidos haciendo una pausa de 1seg entre cada numero
PORTD=0x7E;           //0
delay(1000);       

PORTD=0x30;           //1
delay(1000);

PORTD=0x6D;           //2
delay(1000);

PORTD=0x79;           //3
delay(1000);

PORTD=0x33;          //4
delay(1000);

PORTD=0x5B;          //5
delay(1000);

PORTD=0x5F;         //6
delay(1000);

PORTD=0x70;         //7
delay(1000);

PORTD=0x7F;        //8
delay(1000);

PORTD=0x7B;      //9
delay(1000);
}

 

Una ves compilado el programa lo cargamos a la placa arduino y automaticamente iniciara el contador de 0 a 9

contador de 0 a 9

contador de 0 a 9

 

10 Comments

  1. Buen día.

    Muy interesante la manera en que configuras el puerto y sus salidas, así como asignar un número hexa para las salidas, eso me va a ahorrar muchas líneas del programa.

    Estoy tratando de hacer primero los proyectos sin ver los tutoriales para potenciar mi habilidad para desarrollar, y luego corrijo o comparo con estos, es el primero que veo utiliza números hexagesimales y me abre las puertas a hacer códigos más cortos y con menos probabilidades de errores.

    Le agradecería muchísimo si pudiera hacer un tutorial para configurar varios displays de estos, utilizando una especie de chipselect (que me imagino lo daría el bit más significativo) sin necesidad de comprar otros integrados.

    Saludos desde Colombia.

    • Andres, gracias por tus comentarios, lo vamos a considerar. Saludos.

  2. He estado leyendo que el pin0 jamas se debe poner como salida.

    Puede porfavor explicar cuando usarlo y bajo que circunstancias?.

    Gracias

  3. Muy interesante, apenas comienzo a manejarlo, Bien

  4. no me funciona en el numero 3,5 y 9 :/

    • Revisa 1) Tus conexiones a esos segmentos, 2) Revisa los datos del programa. Si nada de eso, dinos a que te refieres con que no funciona? no se ve? se brincan? no se ven bien?

  5. Esta es la forma más “lógicamente” inteligente que he visto. Cuánta información útil y práctica en tan poco texto. Deberían haber más tutoriales redactados así. En otros sketchs se inflan a escribir código innecesariamente o utilizan registros de desplazamiento que para contar de 0 a 9 no son necesarios. Ha sido muy instructivo para mí porque no sabía que la placa asociaba tres puertos con sus registros PORT, PIN y DDR. Tengo dos dudas que agradecería que alguien me las aclarase: ¿el nombre del puerto (D) viene designado así por la placa?, si es así ¿cómo están designados los otro dos puertos del microcontrolador?
    Muchas gracias.

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *