Beruflich Dokumente
Kultur Dokumente
3 Shares
DESCRIPCIN
Este sensor esta basado en el TCS3200. Es un convertidor de luz a frecuencia programable,
puede filtrar los datos RGB de la fuente de luz y convertirlo en una onda cuadrada (duty cycle
50%) con frecuencia directamente proporcional a la intensidad de luz (irradiacion). La escala
de frecuencia de salida se puede manejar mediante los dos pines S0 y S1 (Selectable Options
2%, 20%, 100% frequency). Los pines S2, S3 controlan el filtro rgb. Todos los pines digitales
I/O se pueden conectar directamente al micro ya que trabajan en el mismo voltaje. Output
enable (OE) coloca la salida en estado de alta impedancia para el intercambio de unidades
mltiples de una lnea de entrada del microcontrolador. Por ltimo, el usuario puede calcular el
color de la luz por los valores RGB.
CARACTERSTICAS TCNICAS
CONEXIONADO
CDIGO DE PROGRAMACIN
En primer lugar tenemos que descargar libreria haciendo click aqui.
#include <TimerOne.h>
#define OUT
#define S2
#define S3
10
#define S0
11
#define S1
12
#define OE
13
#define
Filters_R
#define
Filters_G
#define
Filters_B
void setup()
{
TCS230_init();
Select_Filters(3);
Timer1.initialize();
//default, no fiter
// default 1S
Timer1.attachInterrupt(callback);
Serial.begin(9600);
}
void TCS230_init()
{
pinMode(OUT, INPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(OE, OUTPUT);
digitalWrite(S0, LOW);
// 2% of Output Frequence
digitalWrite(S1, HIGH);
digitalWrite(OE, LOW);
}
//Red
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
Serial.println("-----select Red color");
break;
case Filters_G:
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
//Green
case Filters_B:
//Blue
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
Serial.println("-----select Blue color");
break;
default:
//Clear(no filter)
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
Serial.println("-----no filter");
break;
}
}
{
Count[RGB] = tmp;
Serial.print("tmp=");
Serial.println(tmp);
break;
}
tmp++;
}
}
}
void callback()
{
G_flag = 0;
}
void loop()
{
Timer1.restart();
for(int i=0; i<3; i++)
{
Select_Filters(i);
Timer1.setPeriod(10000);
Measure_Count(i);
//set 10ms
G_flag = 1;
Serial.println(Count[i]);
}
delay(3000);
}