Autor Tema: Ayuda para variar el brillo de un led RGB por PWM  (Leído 3659 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado CarloS_32

  • PIC10
  • *
  • Mensajes: 27
Ayuda para variar el brillo de un led RGB por PWM
« en: 16 de Octubre de 2010, 17:46:10 »
Hola este es mi código..es algo muy sencillito lo que pretendo hacer es probar un led RGB de cuatro patas..usar solo un color y variar el duty cicle pero no pego con los tiempos entre saltos del duty..el T del timer 2 es de 4 ms..¿alguna idea para hacer andar esto?

Código: [Seleccionar]

#include <16f877a.h>
#fuses XT,PUT,NOBROWNOUT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#byte porta=5
#byte portb=6
#byte portc=7

#define RETARDO 65

long duty=1000;

main()
{
set_tris_c(0);
portc=0;
setup_timer_2(T2_DIV_BY_16,255,16);

      while(TRUE)
      {
      setup_ccp2(ccp_pwm);
         for(duty=1000;duty>0;duty--)
         {
         set_pwm2_duty(duty);
         delay_ms(RETARDO);
         }
         for(duty=0;duty<1000;i++)
         {
         set_pwm2_duty(duty);
         delay_ms(RETARDO);
         }
         
      }
}

Desconectado CarloS_32

  • PIC10
  • *
  • Mensajes: 27
Re: Ayuda para variar el brillo de un led RGB por PWM
« Respuesta #1 en: 16 de Octubre de 2010, 21:48:52 »
Bueno no hay interes en los leds RGB jeje q dificil es escontrar algo claro jeje,pero bueno ya lo hice andar jeje asiq si hay algun interesado subo lo q hice q ya anda bien y quedo como para convertirlo en funcion para usar jje bye foro  :)
 

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Ayuda para variar el brillo de un led RGB por PWM
« Respuesta #2 en: 16 de Octubre de 2010, 22:51:10 »
hay consigui hace un tienpo un led RGB los probre con atmega32 use 3pwm para generar todos los colores posibles.
Si que el led rgb brilla mucho mas que los blacos ultrabrillantes.

Desconectado CarloS_32

  • PIC10
  • *
  • Mensajes: 27
Re: Ayuda para variar el brillo de un led RGB por PWM
« Respuesta #3 en: 17 de Octubre de 2010, 15:59:49 »
Hola yo de momento quiero usar un solo PWM, y solo jugar con la intensidad o brillo en conjunto lo cual me daria según creo solo 7 colores..la función de brillo ya la saque ayer y ya esta probada y funciona bien es esta:

Código: CSS
  1. [b]
  2. #include <16f877a.h>
  3. #fuses XT,PUT,NOBROWNOUT,NOWDT,NOPROTECT,NOLVP
  4. #use delay(clock=4000000)
  5. #byte porta=5
  6. #byte portb=6
  7. #byte portc=7
  8.  
  9. #define RETARDO 24                                       //El retardo entre saltos de PWM es un multiplo de 4.
  10. #define DELTA_DUTY 100
  11. long duty=1000;
  12.  
  13.  
  14. main()
  15. {
  16. set_tris_c(0);
  17. portc=0;
  18. setup_timer_2(T2_DIV_BY_16,255,16);                      //Periodo PWM 4 ms
  19.  
  20.       while(TRUE)
  21.       {
  22.       setup_ccp2(ccp_pwm);
  23.          for(duty=1000;duty>0;duty-=DELTA_DUTY)
  24.          {
  25.          set_pwm2_duty(duty);
  26.          delay_ms(RETARDO);
  27.          }
  28.          set_pwm2_duty(duty);
  29.          delay_ms(1000);
  30.          for(duty=0;duty<1000;duty+=DELTA_DUTY)
  31.          {
  32.          set_pwm2_duty(duty);
  33.          delay_ms(RETARDO);
  34.          }
  35.          set_pwm2_duty(duty);
  36.          delay_ms(1000);
  37.          
  38.       }
  39. }
  40.  
  41. [/b]

entonces quiero combinar esta función para cada color que daria cerrando la/s llave/s adecuada/s...entonces al común del RGB de cuatro pines le mando la salida del PWM que estaria al 100 % cuando no se varie el brillo,una cosa que vi es que para retardos mayores que 100 ms o que no sean multiplos de 4 entre saltos del PWM (que aqui es del 10 %) cada vez empezaba a parpadear..bue.. me explaye jeje la cuestión es que si puedes colgar un algoritmo para usar los 3 PWM me vendria bien a futuro y si me puedes dar una mano con esto tambien  :)