MPLAB X y C18: LEDs Secuenciales

Seguimos con las publicaciones en C18 y ahora encenderemos 8 LEDs conectados al puerto B con sus debidas resistencias y en el Master Clear una resistencia de 10KΩ a VCC para que nuestro circuito funcione correctamente. Utilizaremos el PIC18F4620 y nuestra tarjeta entrenadora de PICs para ver los resultados. El circuito debe estar alimentado a 5 Volts, a continuación el circuito que utilizaremos:
Para el código tenemos dos archivos el “Config_FusesPIC.h” y el “main.c”, en el primero tenemos la configuración de todos los FUSES del PIC y que es el que hemos venido ocupando anteriormente, el segundo es el archivo donde esta todo el código para que nuestros LEDs trabajen adecuadamente. Es importante recordar que se ocupara el oscilador interno configurado a 4MHz.

La configuración de los FUSES queda de la siguiente manera:
Ahora nuestro código en el archivo “main.c” nos queda de la siguiente forma:
Explicaremos un poco el código para que se comprenda mejor. En la primera parte se encuentra la librerías utilizadas como las de los delays y la del PIC, también se incluye la librería donde se configuran los FUSES después tenemos la variable LED_Number que servirá para hacer un conteo, también se tiene una arreglo con ocho elementos llamado LED_LookupTable[8]. Como lo que haremos en este ejemplo es ir encendiendo los LEDs conectados al puerto B, el arreglo nos sirve para almacenar los datos que serán mandados al puerto.
Ahora tenemos inicia nuestra función main y lo que hace es configurar nuestro oscilador interno a 4MHz, configuramos entradas y salidas digitales, colocamos el puerto B como salida e inicializamos los puertos en cero. Enseguida entra a un bucle infinito utilizando un while. Para actualizar el puerto del PIC se hará de la siguiente manera:

LATB=LED_LookupTable[LED_Number];

Como al inicio la variable LED_Number=0 no se mostrara nada, la siguiente instrucción aumentará uno a esta variable y se tiene una condicional para revisar el valor de la misma variable y no sobrepasar 8 que es el máximo de datos en el arreglo, si se cumple reinicia a cero la variable. Después se tiene un retardo de 100 milisegundos (este tiempo puede ser modificado) y se vuelve a actualizar el puerto pero como ahora LED_Number=1 encenderá RB0 y así sucesivamente hasta llegar a encender RB7, después de eso se repetirá indefinidamente. Los datos en el arreglo LED_LookupTable se pueden modificar para tener otras combinaciones y que los LEDs enciendan de forma distinta.

Aquí unos ejemplos en acción:

Ejemplo 1:
Ejemplo 2:
Ejemplo 3:
Aquí el enlace para DESCARGAR las librerias disponibles desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare lo mas pronto posible responderlas...
  • Actualización (18/10/2016): Se corrigió enlace de descarga.

No hay comentarios:

Publicar un comentario