肆风 发表于 2015-5-25 01:07:24

求助怎么将取色模块和变色LED相连,使LED正常发光?

今天尝试将tcs3200取色模块和变色LED相连,通过tsc3200模块取色,LED发取色模块取到的颜色,但是失败了。自己怀疑是代码上出了问题,有些弄不懂的地方,我把代码放在下面,求大神们帮我看看哪里有问题~#include <TimerOne.h>
#define S0   6   // Please notice the Pin's define
#define S1   5
#define S2   4
#define S3   3
#define OUT    2

int   g_count = 0;    // count the frequecy
int   g_array;   // store the RGB value
int   g_flag = 0;   // filter of RGB queue
float g_SF;      // save the RGB Scale factor
int   f;
int   y;

void TSC_Init()
{
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(OUT, INPUT);
digitalWrite(S0, LOW);// OUTPUT FREQUENCY SCALING 2%
digitalWrite(S1, HIGH);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
digitalWrite(12, LOW);
//12 pin as gnd
// 打开13脚led作为电源指示:
}

// Select the filter color
void TSC_FilterColor(int Level01, int Level02)
{
if(Level01 != 0)
    Level01 = HIGH;
   
if(Level02 != 0)
    Level02 = HIGH;
   
digitalWrite(S2, Level01);
digitalWrite(S3, Level02);
}
void TSC_Count()
{
g_count ++ ;
}
void TSC_Callback()
{
switch(g_flag)
{
    case 0:
      Serial.println("->WB Start");
      TSC_WB(LOW, LOW);            //Filter without Red         
      break;
    case 1:
      Serial.print("->Frequency R=");
      Serial.println(g_count);
      g_array = g_count;
      TSC_WB(HIGH, HIGH);            //Filter without Green      
      break;   
    case 2:
      Serial.print("->Frequency G=");      
      Serial.println(g_count);
      g_array = g_count;
      TSC_WB(LOW, HIGH);             //Filter without Blue
      break;
    case 3:
      Serial.print("->Frequency B=");
      Serial.println(g_count);
      Serial.println("->WB End");
      g_array = g_count;
      TSC_WB(HIGH, LOW);             //Clear(no filter)   
      break;
    default:   
      g_count = 0;      
      break;
}
}

void TSC_WB(int Level0, int Level1)//White Balance
{
   g_count = 0;
   g_flag ++;
   TSC_FilterColor(Level0, Level1);
   Timer1.setPeriod(1000000);
}
void setup()
{
   TSC_Init();
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
   Serial.begin(9600);
   Timer1.initialize();             // defaulte is 1s
   Timer1.attachInterrupt(TSC_Callback);
   attachInterrupt(0, TSC_Count, RISING);   
   delay(4000);
   for(int i=0; i<3; i++)
   Serial.println(g_array);
   g_SF = 255.0/ g_array;   //R Scale factor
   g_SF = 255.0/ g_array ;    //G Scale factor
   g_SF = 255.0/ g_array ;    //B Scale factor
   Serial.println(g_SF);
   Serial.println(g_SF);
   Serial.println(g_SF);
}
void loop()
{
   g_flag = 0;
   delay(4000);
   for(int i=0; i<3; i++)
   {
    f=g_array * g_SF;
   Serial.println(f);
   }
analogWrite(9,g_array * g_SF );
analogWrite(10,g_array * g_SF );
analogWrite(11,g_array * g_SF );

}
页: [1]
查看完整版本: 求助怎么将取色模块和变色LED相连,使LED正常发光?