RGB LED Interface with PIC16F877A micro-controller
By Bernice Zuiya
Introduction
RGB signifie Rouge Vert et Bleu, avec cette DEL il peut être possible d'obtenir un grand nombre de couleurs de la combinaison de vert, bleu et rouge. Dans ce Projet je vais simplement donner une brève explication de la façon dont vous pouvez Interface une DEL RGB avec un contrôleur PIC16F877A en utilisant le module PWM.
RGB LED
R-G-B
Working
Ce que je vais vous dire ici, c'est comment une DEL RGB peut directement être connecté à un micro-contrôleur, comparant essentiellement à ce que nous avons fait dans le projet précédent de clignoter une DEL à l'aide d'un micro-contrôleur ici est en quelque sorte différente parce qu'il ya un Résistance ont été utilisés en série avec la DEL pour limiter le courant circulant dans la DEL mais ici nous n'allons pas utiliser une résistance en série bu le terminal p de la DEL RGB sera directement connecté à une broche PWM sur PORTC du contrôleur et N borne à la terre. Le principe principal du fonctionnement d'une DEL RGB est que nous savons que la sortie de la modulation de largeur d'impulsion peut aussi être mesurée comme un signal analogique, de sorte que chaque quantité corrige une couleur. Cela signifie que, par exemple, si la broche PWM donne 2,7 Volt, elle peut correspondre à la couleur du chocolat; Le code ci-dessous est écrit dans le compilateur mikroC pour PIC où il utilise essentiellement la bibliothèque PWM et pour ce projet nous produisons le PWM avec une fréquence égale à 5 KHz ou 5000 Hz en savoir plus sur PWM Ici.
Circuit Diagram
Le schéma de circuit ci-dessous montre comment une DEL RGB peut être connectée à une broche PWM (CPP1) du PIC16F877A où j'ai mis une résistance en série avec la DEL par rapport à ce que nous avons fait dans le projet clignotant DEL.
Code:
Download the full project here
void main()
{
TRISC=0X7C; // the two first Pins of PORTC in OUTPUT and all remaining as Imput
PORTC=0X00; // All pins of PORTC in Low State (0)
PWM1_Init(5000); // Setting PWM at 5000Hz
PWM1_Start(); // Start PWM Module
for(;;)
{
unsigned int i;
for(i=0;i<255;i++){
PWM1_Set_Duty(i); // the Duty cycle change with the increasing of the of i'value
delay_ms(50); // Delay 1 second.
}
for(i=255;i<0;i--){
PWM1_Set_Duty(i); // the Duty cycle change with the Decrementing of the of i'value
delay_ms(50); // Delay 1 second.
}
}
}