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