PIC: Controle de LED RGB com PIC16F628A
Neste tutorial será mostrado uma maneira simples de controlar um LED RGB com o PIC16F628A sem utilizar o canal PWM.
O Led RGB é um LED que reproduz três cores: vermelho, verde e azul. Ele possui 4 terminais, um para cada cor e o GND.

É possível acender cada uma das cores com diferentes intensidades, resultando em cores diferentes das primárias. Como o PIC possui apenas um canal PWM, utilizaremos a interrupção do TIMER1 e três portas do PIC, emulando um canal PWM.
Para cada interrupção gerada, uma variavel (i) é incrementada e comparada com as variáveis (R, G, B), se o valor de (i) é menor, a porta terá nível lógico 1, caso for maior a porta terá nível lógico 0.
No Circuito coloquei apenas 3 botões para incrementar os valores das cores.
O timer1 foi configurado para disparar a cada 100us, com um clock de 8Mhz.
CÓDIGO
MikroC PRO PIC
/*
Controlando um LED RGB com o PIC16F628A
Autor: Tiago Henrique
*/
sbit Led_R at PORTB.B5;
sbit Led_G at PORTB.B6;
sbit Led_B at PORTB.B7;
typedef struct
{
char R;
char G;
char B;
}Colors;
Colors RGB = { 127, 127, 250 };
char i = 0;
void Interrupt()
{
if ( TMR1IF_bit )
{
if( i <= RGB.R )
LED_R = 1;
else
LED_R = 0;
if( i <= RGB.G )
LED_G = 1;
else
LED_G = 0;
if( i <= RGB.B )
LED_B = 1;
else
LED_B = 0;
i++;
TMR1IF_bit = 0;
TMR1H = 0xff;
TMR1L = 0x37;
}
}
void InitTimer1()
{
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0xff;
TMR1L = 0x37;
TMR1IE_bit = 1;
INTCON = 0xC0;
}
char flag = 0;
void main()
{
InitTimer1();
TRISB = 0x0F;
while(1)
{
if( PORTB.B0 ) flag.B0 = 1;
if( PORTB.B1 ) flag.B1 = 1;
if( PORTB.B2 ) flag.B2 = 1;
if( !PORTB.B0 && flag.B0 )
{
RGB.R += 2;
flag.B0 = 0;
}
if( !PORTB.B1 && flag.B1 )
{
RGB.G += 2;
flag.B1 = 0;
}
if( !PORTB.B2 && flag.B2 )
{
RGB.B += 2;
flag.B2 = 0;
}
}
}


Qual compilador C você utiliza para programar os PICs ?
ResponderExcluirMikroC PRO PIC
ExcluirCCS.
ExcluirVocê teria um arquivo em .HEX para esse efeito, não teria precisão para 17 efeitos, o que mais preciso são quatro saídas para efeito, com controle de velocidade, ...e-mail alenice-s-s@bol.com.br .....agradeço. . http://www.youtube.com/watch?v=p5Mbk3TOLyQ
ResponderExcluirVocê teria um arquivo em .HEX para esse efeito, não teria precisão para 17 efeitos, o que mais preciso são quatro saídas para efeito, com controle de velocidade, ...e-mail alenice-s-s@bol.com.br .....agradeço. . http://www.youtube.com/watch?v=p5Mbk3TOLyQ
ResponderExcluirO Link do esquema está quebrado.
ResponderExcluirArrumei. Vlw!!
ExcluirBoa noite alguen pode min ajudar tenho um modulo HC-11 433mhz comonicaçaõ serial como faso pra se Comonica entre dois pic 16f628a com um pic e um pc já concegui esto tentando entre dois pic
ResponderExcluirBOA TARDE EU QUERIA FAZER UM PROJETO TIPO O DE CIMA MAS COM ALGUMAS DIFERENÇAS.
ResponderExcluirO PIC 12F683 + ACS712+ LED RGB . O MICROCONTROLADOR LÊ A CORRENTE DO ACS712 E O RGB VAI MUDANDO DE COR DE ACORDO COM A LEITURA . TERIA COMO ME AJUDAR OU ME DA UMA IDEIA DE COMO FAZER ?
Olá!
ResponderExcluirVocê poderia postar algo sobre PID, para controlar um motor DC por exemplo.
Desde já grato.
TEstei esseCodigo mas o led RGB estasempre alterando as cores sem carregar nos botoes, vai desdea instensidade mais fraca a mais intensa.
ResponderExcluiro que podera ser?
Cumprimentos