求助怎么将取色模块和变色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]