robtillaart:
Welcome in Arduino land.
Advice: first get one sensor to work before thinking how to scale up.
As far as I know the "OUT" should be connected to the D47( PL2 ( T5 )) of the mega board
I don't understand unless you provide a complete schematic.
is there any way to plug two color sensor in one board
Never worked with this particular sensor, but with the knowledge I have there is no reason why not.
Please provide a link to the datasheet of the sensor.
thanks for your reply, there is a source code which uses GY31 to measure the RGB value, which is the followings:
#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[3]; // store the RGB value
int g_flag = 0; // filter of RGB queue
float g_SF[3]; // save the RGB Scale factor
// Init TSC230 and setting Frequency.
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);
}
// 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[0] = g_count;
TSC_WB(HIGH, HIGH); //Filter without Green
break;
case 2:
Serial.print("->Frequency G=");
Serial.println(g_count);
g_array[1] = 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[2] = 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); // set 1s period
}
void setup()
{
TSC_Init();
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[0] = 255.0/ g_array[0]; //R Scale factor*
-
g_SF[1] = 255.0/ g_array[1] ; //G Scale factor*
-
g_SF[2] = 255.0/ g_array[2] ; //B Scale factor*
-
Serial.println(g_SF[0]);*
-
Serial.println(g_SF[1]);*
-
Serial.println(g_SF[2]);*
}
void loop()
{
- g_flag = 0;*
- for(int i=0; i<3; i++)*
Serial.println(int(g_array * g_SF*));
_ delay(4000);*_
}
The color sensor works great when I plug only one sensor into the board. However, when I attaching the second color sensor onto the board, using the same program but editing the pin number, the reading is weird and it is affected from the first sensor (However if i remove the first sensor, the reading turns 0,0,0 . The program is not working when I change the pin number)
*#define S0 7 *
#define S1 8
#define S2 9
#define S3 10
#define OUT 11
For the datasheet of the sensor, http://smart-prototyping.com/image/data/2_components/Arduino/100847%20GY-31%20TCS230%20TCS3200%20Color%20Sensor%20Recognition%20Module%20for%20Arduino/color-sensor-module.pdf
Thankyou again.