miércoles, 16 de abril de 2014

Manejo de Contador y LEDs RGB





En este proyecto aprenderemos a manejar como un entero la cuenta que lleva nuestro contador, y posterior mente mediante la función "sprinft" imprimirlo en nuestra LCD. También haremos un ejemplo con este entero, prendiendo unos LED RGB.





Necesitaremos:

- Tendremos que tener cableada y configurada nuestra LCD CHAR Custom, que se explica en detalle aquí.

Empecemos:

Primero tenemos que incluir nuestra librería de LCD custom al nuevo proyecto para poder usarla.

abrimos un nuevo proyecto y en este nos vamos a:  project/dependencies...

En el cuadro de abajo en la parte de user, damos en la carpeta User dependencies...




aqui iremos a la dirección en donde tenemos la libreria custom que descargaron del post de LCD Char custom y al abrirlo les aparecerán estas casillas las cuales marcaremos todas:





Luego de hacer esto damos en OK.

Podremos ver que se ha agregado una pestaña nueva a nuestra biblioteca de componentes y de aquí escogemos nuestra LCD y procedemos a configurarla tal cual el post de LCD_Custom.






Luego de esto añadiremos a nuestro esquemático un contador.

Vamos a nuestra biblioteca de componentes en la pestaña cypress y luego Digital/functions y el primero es
nuestro contador, lo arrastramos a una parte vacía de nuestro esquemático, tendrán algo así:





damos doble clic encima de el y tendremos la ventana de configuración:



Configuraremos el nombre, pueden ponerle el que ustedes quieran, en mi caso lo dejare como counter.

Seguido esta la Resolución:
Es una parte importante de nuestro contador ya que este nos indica el máximo conteo al que puede llegar. Entonces con 8 bits podemos llegar a un conteo de 0 a 255, con 16 bit de 0 a 65535, con 24 bit de 0 a 16777215 y con 32 bit de 0 a 4294967295. Explicado de la siguiente manera:

2^8 = 256
2^16=65536
2^24=16777216
2^32=4294967295


En nuestro caso como queremos una cuenta de 0 a 15 pondremos nuestro contador en 8 bits.

mas abajo esta el periodo, este es el numero al cual sera nuestro máximo conteo, si queremos una cuenta de 20, pues este sera el numero que pongamos allí.

En nuestro caso que queremos una cuenta de 0 a 15 pondremos el numero 16, esto es por que al llegar al numero 15 nuestro contador vuelve al punto de inicio, lo hacemos para poder visualizar el 15.



Nuestro contador tiene una opción especial, puede cambiar una salida de un 0 lógico a un 1 lógico, dependiendo la cuenta que queremos, este es nuestro compare value, y tiene varias opciones, una de ellas es que cambie de estado al ser mayor, igual o menor que un numero que queramos, si lo llegáramos a necesitar, pondríamos estas configuraciones en Compare Mode y Compare Value.

luego viene Clock mode, aquí escogeremos la manera en la que el contador cuente, puede ser Ascendente (0 a 15) o descendente (15 a 0), en este caso como queremos que cuente de 0 a 15 lo pondremos en modo ascendente (Up Counter), aplicamos todo y aceptamos.





tendrán algo así:





nuestro contador tiene una entrada de señal de reloj, iremos a nuestra biblioteca de componentes y en System escogeremos Clock, lo arrastramos a nuestro esquemático y lo  conectamos a esta entrada:


También tiene una entrada de una señal de reset, como no tenemos una señal de reset, este pin lo podremos en 0 lógico.
nos vamos nuestra biblioteca de componentes a digital/logic y arrastraremos un Logic Low '0' a nuestro esquemático y lo conectamos a el pin de reset




por ultimo nos queda indicar nuestra señal que queremos contar, esta la vamos a tener de el switch disponible que hay en la tarjeta.

tendremos que ir a ports and pins y escoger Digital input pin y conectarlo a el pin count.

como sabemos el switch que trae nuestra tarjeta esta por defecto conectado a tierra entonces este pin que escogimos tenemos que configurarlo en Resistive Pull Up, para que nuestro switch funcione, para esto le damos doble clic sobre el pin y en la pestaña "general" escogemos Resistive Pull Up:





después de haber echo esto aplicamos y aceptamos.



Ya tenemos configurado nuestro Contador.

Pasamos a configurar nuestros LED

Como queremos que cuando la cuenta que lleva el contador sea menor o igual 5, se prenda el led verde, cuando sea mayor que 5 y menor o igual que 10, se prenda el led Rojo y cuando sea mayor que 10 se prenda el led azul.

Tendremos que configurar los pines de salida, para los LED

Vamos a Ports and Pin y allí escogemos Digital Output Pin y arrastramos tres de ellos, uno para cada led
le damos doble clic y cambiamos el nombre de cada uno a nuestro gusto y adicional mente desmarcamos la opción HW connection que viene marcada por defecto.


Así:




aplicamos y aceptamos, si esta todo bien, tendrán un esquemático igual al mio:





la configuración y cableado de la LCD esta en el post anterior, aquí




Terminado esto pasaremos a Nuestro código:

viene comentariado al detalle para explicar cada linea :






La linea x=counter_ReadCounter();

nos sirve específicamente, para que en la variable x que tuvo que ser inicializada como entero, se guarde el valor que lleva nuestro contador, entonces nuestra variable x se incrementara desde 0 a 15.

La linea sprintf(Publicar, "%d     ", x);

aquí hacemos la conversión de una variable entera a una variable char para poder ser publicada en la LCD

su uso es bastante fácil, como podemos ver esta función tiene tres argumentos, lo que necesitamos saber es que en el primer argumento va la variable Char a la que le queremos asignar el valor entero que lleva el tercer argumento.


Ahora asignamos pines

los pines de la LCD se asignan tal como esta en el post anterior de LCD Custom

asignamos LEDB a el pin P0[3] que es nuestro led azul
asignamos LEDG a el pin P0[2] que es nuestro led verde
asignamos LEDR a el pin P1[6] que es nuestro led rojo

y nuestro Pin_1 lo asignamos a el Switch que tiene la tarjeta que es el pin P0[7]




si hacen todo como lo hice yo, al compilar tendrán 0 errores y 0 advertencias
Procedemos a programar nuestra tarjeta y a verificar nuestro programa

aquí un vídeo demostrativo ^^





y aquí les dejo el proyecto

Contador.rar




Brayan Andres Bermudez B.
Estudiante





No hay comentarios.:

Publicar un comentario