Hola Controleros y Controleras, en esta entrada vamos a aprender paso a paso como hacer una secuencia de Leds con PIC utilizando el compilador CCS C. En esta entrada veremos un código de implementación de ejemplo, acompañado de su video en YouTube. Dicho código se encuentra al final de esta pagina y lo puedes descargar totalmente GRATIS.
Antes de empezar, te invito a que le des un vistazo a nuestro 👉 CURSO GRATUITO DE MICROCONTROLADORES PIC 👈 donde aprenderás a programar diferentes perifericos de este dispositivo.
También te puedes suscribir al canal de YouTube si deseas aprender más sobre microcontroladores PIC.
Secuencia de Luces con PIC
En C existen dos instrucciones de Rotación, una a la izquierda y otra a la derecha, que nos pueden servir para hacer una Secuencia de leds con PIC o secuencia de luces con PIC
>> 1: Rotación a la derecha, la cantidad de rotaciones es especificada por él número que tiene enseguida.
<< 1: Rotación a la izquierda, la cantidad de rotaciones es especificada por el número que tiene enseguida.
Al rotar el registro el bit es ocupado con un cero.
PORTB = PORTB<<1; //Rota el puerto B a la izquierda una vez PORTB = PORTB>>1; //Rota el puerto B a la derecha una vez
Con estas instrucciones podemos obtener el efecto de la secuencia de leds usando un PIC igual a la del Auto Fantástico. También puede ser usada para hacer proyectos de luces, luces rítmicas con LED usando PIC.
- También podria interesarte aprender como hacer una 👉 Secuencia de Leds con Arduino.
- O hacer unas secuencias de luces más profesionales 👉 Cubo de Leds 5x5x5 con PIC
Algunas Tiras de LEDS de varios colores (RGB) pueden ser encontrados en Amazon las cuales pueden ser controladas directamente con nuestro celular:
Secuencia de Leds con PIC 16F877A – 16F887 – 18F4550
Encender uno a uno los bits del puerto B (0.5seg) desde RB0 hasta RB7 y luego encenderlos en sentido contrario desde RB7 hasta RB0.
Explicación del código y sumulación
El código de implementación de las luces ritmicas con LED usando microcontrolador PIC, puede ser implementado en cualquier microcontrolador, en este ejemplo se usa el PIC16F887, pero puedes usar cualquiera, por ejemplo usar el 16F877A (desactivando el NOWDT de los fuses y colocando el pin 1 a +5V), o por ejemplo el 18F4550 colocando en el encabezado:
#include <18f4550.h> #byte porta = 0xf80 // Identificador para el puerto A. #byte portb = 0xf81 // Identificador para el puerto B. #byte portc = 0xf82 // Identificador para el puerto C. #byte portd = 0xf83 // Identificador para el puerto D. #byte porte = 0xf84 // Identificador para el puerto E.
Ademas de poder hacer secuencia de luces y de leds con PIC, estas instrucciones de rotación van a servir para hacer otro tipo de programas y de secuencias lógicas que podamos usar, especialmente cuando empecemos a realizar logicas binarias.
Implementación práctica del Código de Luces Rítmicas de LEDs
El siguiente video, muestra la implementación del circuito de la secuencia de leds o de las luces rítmicas de leds con microcontrolador PIC, mira como quedó el secuenciador de luces programables y desarrolla tu propio proyecto de luces.
A continuación te dejo el código de implementación de la secuencia de luces con PIC para que la descargues e implementes en tu propio computador, para acceder al código solo basta compartir el contenido de esta entrada con alguno de los tres botones abajo.
#INCLUDE<16F887.h> #USE DELAY(CLOCK=4000000) #FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP #BYTE PORTB=6 MAIN() { SET_TRIS_B(0B00000000); //Configura el Puerto B Como salidas PORTB=0; //Comienza con todos los Leds Apagados WHILE(TRUE) //Haga por siempre .... { PORTB=0B00000001; //Prendo unicamente el led de RB0 DELAY_MS(500); //Retardo de 500 milisegundos WHILE (!BIT_TEST(PORTB,7)) //Haga mientras el LED RB7 se encuentre apagado { PORTB=PORTB<<1; //Rote hacia la izquierda una unidad DELAY_MS(500); //Retardo de 500 milisegundos } DELAY_MS(500); //Retardo de 500 milisegundos WHILE (!BIT_TEST(PORTB,0)) //Haga mientras el LED RB0 se encuentre apagado { PORTB=PORTB>>1; //Rote hacia la derecha una unidad DELAY_MS(500); //Retardo de 500 milisegundos } } }
El siguiente código muestra la lógica inversa, donde todos los leds están encendidos y unicamente un led está apagado, y la rotación se hace con el led apagado. Para eso, nos vamos a valer de la operación complemento (~) y una variable auxiliar (AUX). La función complemento lo que hace es complementar cada bit de la variable auxiliar, es decir si el bit es 1 lo convierte en 0 y viceversa.
#INCLUDE<16F887.h> #USE DELAY(CLOCK=4000000) #FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP #BYTE PORTB=6 int AUX; MAIN() { SET_TRIS_B(0B00000000); //Configura el Puerto B Como salidas PORTB=0; //Comienza con todos los Leds Apagados WHILE(TRUE) //Haga por siempre .... { PORTB=0B11111110; //Prendo unicamente el led de RB0 AUX=0B00000001; DELAY_MS(500); //Retardo de 500 milisegundos WHILE (BIT_TEST(PORTB,7)) //Haga mientras el LED RB7 se encuentre encendido { AUX=AUX<<1; //Rote hacia la izquierda una unidad PORTB=~(AUX); //Complementar la variable AUX DELAY_MS(500); //Retardo de 500 milisegundos } DELAY_MS(500); //Retardo de 500 milisegundos WHILE (BIT_TEST(PORTB,0)) //Haga mientras el LED RB0 se encuentre encendido { AUX=AUX>>1; //Rote hacia la izquierda una unidad PORTB=~(AUX); //Complementar la variable AUX DELAY_MS(500); //Retardo de 500 milisegundos } } }
Suscríbete a este sitio WEB para estar enterado de las nuevas entradas!
Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:
👉 Invitar a Sergio a un Café ☕️
Que esten muy bien, nos vemos en la siguiente entrada.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.