Encender y apagar un led con Pulsador en CCS

Led Pulsador

Como están amigos, en esta entrada les hablare de como encender y apagar un led con pulsador utilizando para ello un Microcontrolador PIC 16f28A y un poco de código de lenguaje C.

Con este circuito intento poner a su disposición información detallada del código de programación, para que puedan revisar y entender cada parte de las rutinas que intervienen y que función cumplen.

Sin mas preámbulos, esta es la lista de componentes:

Microcontrolador PIC 16f628.

Realmente podemos utilizar cualquier Micro que tengamos a mano. Este es muy famoso y lo tengo ahora disponible.

Pic16f628
Pic16f628A

Los puertos de entrada y salida que posee este amiguito, asi como su reloj interno de 4MHZ, lo hacen ideal para nuestro primeros pasos en el mundo de la programación de microcontroladores.

Diodos LED

Nuestro circuito para encender y apagar un led con pulsador añadirá un diodo led adicional el cual estará parpadeando independientemente del led controlado por pulsador. Con esto buscamos que nuestra rutina tenga un pequeño grado de dificultad.

Usaremos entonces 2 diosos led, en este caso ROJOS, cada uno con su respectiva resistencia.

Led rojo
Led rojo

Calculando el valor de las resistencias

Teniendo en cuenta que nuestro diodo led Rojos podrían trabajar como máximo a unos 20 mA y unos 2 Voltios y que nuestro PIC entregará unos 5 voltios en promedio, podemos calcular el valor de nuestra resistencia:

  • 5V del PIC – 2V del LED = 3V (Esto consumirá la resistencia como caída de voltaje)
  • 20 mA intensidad de corriente del circuito.
  • Ley de Ohm R=V / I
  • Resistencia = 150 Ohms
RESISTENCIA 150 OHMIOS
RESISTENCIA 150 OHMIOS

Adicional mente requeriremos de una resistencia de 3K para el pin que controlara la entrada del pulsador.

Pulsador

Este pequeño componente servirá para cambiar el estado del pin de entrada de nuestro circuito.

Pulsador electrónico para encender y apagar un led
Pulsador Electrónico

Circuito para encender y apagar led con pulsador.

El circuito sera simulado en Proteus y tendrá las siguientes características:

  • El led conectado a la pata RB0 se encenderá o apagara solo después de soltar el pulsador.
  • El led conectado a RB1 parpadea de forma continua e independiente del pulsador.

El circuito se muestra en la siguiente imagen:

Circuito para encender y apagar un led con pulsador
Circuito led con pulsador

El código del circuito para encender y apagar un led con pulsador.

El código del circuito se muestra a continuación:

#INCLUDE <16f628a.h>   // Define el PIC16f628
#FUSES NOWDT      // Es un fuse que resetea el pic si este se cuelga.
#FUSES NOPROTECT  // Permite o bloque lectura del pic con un  programador
#FUSES NOLVP      // Anula pin de programacion RB4 y lo deja como I/O
#FUSES NOMCLR     // NOMCLR = PIN RA5 Input. MCLR=PIN RA5 como reset   
// ************************FUSES DEL RELOJ ************************************
//************************ PARA USAR EL OSCILADOR INTERNO DEL PIC *************
#FUSES INTRC_IO            // HABILITA el OSCILADOR INTERNO 
#USE DELAY(clock = 4000000, INTERNAL) // COMPLEMENTA EL FUSE INTRC_IO
//------------------- SETEO DE PUERTOS DEL PIC --------------------------------
# USE fast_io(A)           // SET RAPIDO DE PUERTO A TRABAJA CON SET_TRIS_A(FF)
# USE fast_io(B)           // SET RAPIDO DE PUERTO B TRABAJA CON SET_TRIS_B(0B)
//**************** PROGRAMA PRINCIPAL *****************************************
void main()
   {
   output_A(0);               // ARRANCA LIMPIO TODO EL PUERTO A
   SET_TRIS_A(0b00000001);    // Solo el PIN A0 se configura como entrada
   output_B(0);               // ARRANCA LIMPIO TODO EL PUERTO B
   SET_TRIS_B(0X00);          // Todo el puerto B se configura como Salida
 
   while(TRUE)
   {
//************Mientras el pulsador no se presiona *****************************   
   if (input (PIN_A0)==1)          // SI EL PULSADOR NO SE PRESIONA
   {
   Output_toggle (PIN_B1);         // Parpadea el LED 2
   Delay_ms(100);                  // Retardo para ver el parpadeo del led 2
   }
//*********** Se detecta la pulsacion del pulsador de RA0 *********************
   else
   if (input (PIN_A0)==0)          // SI EL PULSADOR DE RA0 FUE PRESIONADO
   {
   DELAY_MS(100);                  // Retardo Antirrebote
   while (input (PIN_A0)==0)       // Mientras esta presionado
   {
   Output_toggle (PIN_B1);         // El led 2 sigue Parpadeando independiente
   Delay_ms(100);                  // Retardo para ver el parpadeo del led 2  
   }                               // Cuando se suelta el pulsador
   Output_toggle (PIN_B0);         // RECIEN Se enciende o apaga LED 1 
   }
   }
   }
//************************ fin del programa ***********************************

Y a continuación los archivos para descargar.

http://pladollmo.com/21375611/proyecto-led

Recuerda que puedes visitar nuestro canal de youtube en :

Link https://www.youtube.com/channel/UC7UGXaGmuYYZCogU5owLqAQ?view_as=subscriber

y puedes ver todas las entradas de nuestro blog:

link https://www.tecnocienciaperu.com/blog

Nuestro canal de youtube:

Agregue un comentario

Su dirección de correo no se hará público.