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.
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.

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

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.

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:

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:
















