LED RGB

 
#include "d:\Shemi\RGB\pic16f886\16f886.h"
 
#define red_pin Pin_b5
#define green_pin Pin_b4
#define blue_pin Pin_b3
 
int mode=1;
int16 adc_time=0;
int red,green,blue;
int rgb_index=1;
int poten=1;
int i,speed=10;
int exit=0; // izlizane momentalno ot tekusht rejim
 
 
#int_EXT
void  EXT_isr(void) 
{
read_adc(ADC_START_ONLY);
//mode++;   //smiana na rejima
exit=1; //izlizane ot tekushtia rejim
//delay_ms(3);//debounce
//if (input(pin_b0)==0)mode=12;
//else mode=1;
mode=12;
return;
}
 
#int_AD
void  AD_isr(void) 
{
speed=read_adc(ADC_READ_ONLY)>>4;
//red=poten;
//green=poten;
//blue=poten;
 
return;
 
}
 
#int_TIMER1
void  TIMER1_isr(void) 
{
 
}
 
#int_TIMER2
void  TIMER2_isr(void) 
{
rgb_index++;
if (rgb_index==0){
   if(red>0)output_high(red_pin);
   if(green>0)output_high(green_pin);
   if(blue>0)output_high(blue_pin);
return;
}
if (rgb_index>=red)output_low(red_pin);
if (rgb_index>=green)output_low(green_pin);
if (rgb_index>=blue)output_low(blue_pin);
//if(adc_time==0)read_adc(ADC_START_ONLY);
//adc_time++;
return;
}
 
#int_TIMER0
void  TIMER0_isr(void) 
{
 
 
}
void fade_spectrum();
void fade_red();
void fade_green();
void fade_blue();
void fade_red_green();
void fade_green_blue();
void fade_blue_red();
void flash_mode();
void jump_color();
 
 
void main()
{
 
   setup_adc_ports(sAN0|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_32);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
   setup_timer_2(T2_DIV_BY_1,110,1); //overflow pri stoinost 10
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
   setup_oscillator(OSC_8MHZ);
   //enable_interrupts(INT_EXT);
   enable_interrupts(INT_EXT_H2L );
   enable_interrupts(INT_AD);
   //enable_interrupts(INT_TIMER1);
   enable_interrupts(INT_TIMER2);
  // enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
  
   port_b_pullups (TRUE); //pullup za rbo prekyswane
 
 
   // TODO: USER CODE!!
   set_adc_channel(0);
   red=0;
    green=0;
    blue=255;
   While(1){
     
      switch(mode){
           case 1:{exit=0;speed=10;fade_spectrum();break;}
           case 2:{exit=0;fade_red();break;}
           case 3:{exit=0;fade_green();break;}
           case 4:{exit=0;fade_blue();break;}
           case 5:{exit=0;fade_red();fade_green();fade_blue();break;}
           case 6:{exit=0;fade_red();fade_green();break;}
           case 7:{exit=0;fade_red();fade_blue();break;}
           case 8:{exit=0;fade_green();fade_blue();break;}
           case 9:{exit=0;fade_red_green();break;}
           case 10:{exit=0;fade_green_blue();break;}
           case 11:{exit=0;fade_blue_red();break;}
           case 12:{exit=0;speed=128;jump_color();break;}
         //default:{delay_ms(1000);break;}
   
        }
       if (!input(pin_b0)==0)mode=1;
       if(mode>12)mode=1;
     // if(exit>0)  flash_mode();              
          
   }
}
void jump_color(){
red=254; green=0;blue=0;
delay_ms(speed);
red=254; green=254;blue=0;
delay_ms(speed);
red=0; green=254;blue=0;
delay_ms(speed);
red=0; green=254;blue=254;
delay_ms(speed);
red=0; green=0;blue=254;
delay_ms(speed);
red=254; green=0;blue=254;
delay_ms(speed);
}
void flash_mode(){
   green=0; blue=0;
   for(i=mode; i>0;i--)  {
   red=0;green=0; blue=0;
   delay_ms(50);
   red=128;green=255; blue=255;
   delay_ms(50);
   }
}
void fade_red(){
   red=0; green=0;blue=0;
   for(i=0;i<255&&exit==0;i++){
          red=i;
         delay_ms(speed);
       }
   for(i=254;i<255&&exit==0;i--){
          red=i;
          delay_ms(speed);
       }
}
void fade_green(){
red=0; green=0;blue=0;
   for(i=0;i<255&&exit==0;i++){
          green=i;
         delay_ms(speed);
       }
   for(i=254;i<255&&exit==0;i--){
          green=i;
          delay_ms(speed);
       }
}
void fade_blue(){
red=0; green=0;blue=0;
   for(i=0;i<255&&exit==0;i++){
          blue=i;
         delay_ms(speed);
       }
   for(i=254;i<255&&exit==0;i--){
          blue=i;
          delay_ms(speed);
       }
}
 
void fade_spectrum(){      
      red=0; green=0;blue=255;
      for(i=0;i<255&&exit==0;i++){
          red=i;
         delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          blue=i;
          delay_ms(speed);
       }
       for(i=0;i<255&&exit==0;i++){
          green=i;
          delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          red=i;
          delay_ms(speed);
       }
       for(i=0;i<255&&exit==0;i++){
          blue=i;
          delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          green=i;
          delay_ms(speed);
       }
}
void fade_red_green(){
red=255; green=0;blue=0;
      for(i=0;i<255&&exit==0;i++){
          green=i;
          delay_ms(speed);
       }  
      for(i=254;i<255&&exit==0;i--){
          red=i;
          delay_ms(speed);
       }  
      for(i=0;i<255&&exit==0;i++){
          red=i;
         delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          green=i;
          delay_ms(speed);
       }
}
void fade_green_blue(){
red=0; green=255;blue=0;
      for(i=0;i<255&&exit==0;i++){
          blue=i;
          delay_ms(speed);
       }  
       for(i=254;i<255&&exit==0;i--){
          green=i;
          delay_ms(speed);
       }
       for(i=0;i<255&&exit==0;i++){
          green=i;
          delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          blue=i;
          delay_ms(speed);
       }
       
}
void fade_blue_red(){
   red=0; green=0;blue=255;
      for(i=0;i<255&&exit==0;i++){
          red=i;
         delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          blue=i;
          delay_ms(speed);
       }
       for(i=0;i<255&&exit==0;i++){
          blue=i;
          delay_ms(speed);
       }
       for(i=254;i<255&&exit==0;i--){
          red=i;
          delay_ms(speed);
       }
       
}
 
/*      output_high(pin_b5);
       delay_ms(duty_time);
       output_low(pin_b5);
       output_high(pin_b4);
       delay_ms(duty_time);
       output_low(pin_b4);
       output_high(pin_b3);
       delay_ms(duty_time);
        output_low(pin_b3);    
*/
       
 
English

categories:

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.