Color Sensor¶
Similiar to ambient light sensors, color sensors are responsive to light, however they are typically manufactured to only capture red, green, and blue light though some models are responsive to all visible light. MetaEnvironment boards come equipped with a TCS34725 color sensor, accessed through the ColorTcs34725 interface.
import com.mbientlab.metawear.module.ColorSensorTcs34725;
final ColorSensorTcs34725 colorSensor = board.getModule(ColorSensorTcs34725.class);
Configuration¶
The color sensor has 2 configurable parameters that affect the data range, resultion, and sensitivity.
Parameter |
Description |
---|---|
Gain |
Analog signal scale |
Integration Time |
Amount of time spent to aggregate adc values |
There is also a white illuminator LED next to the sensor that can be used to provide additional light if the surrounding area is too dark.
import com.mbientlab.metawear.module.ColorSensorTcs34725.Gain;
// set gain to 4x, integration time to 4.8ms,
// keep illuminator led off
colorDetector.configure()
.gain(Gain.TCS34725_4X)
.integrationTime(4.8f);
.commit();
ADC Values¶
The red, green, blue, and clear ADC values measured by the TCS3472 device are represented by the ColorAdc class and is classified as a forced data producer.
import com.mbientlab.metawear.module.ColorTcs34725;
import com.mbientlab.metawear.module.ColorTcs34725.ColorAdc;
final ColorTcs34725 colorSensor= mwBoard.get(ColorTcs34725.class);
colorDetector.adc().addRouteAsync(new RouteBuilder() {
@Override
public void configure(RouteComponent source) {
source.stream(new Subscriber() {
@Override
public void apply(Data data, Object ... env) {
Log.i("MainActivity", "color adc = " + data.value(ColorAdc.class).toString());
}
});
}
}).continueWith(new Continuation<Route, Void>() {
@Override
public Void then(Task<Route> task) throws Exception {
colorDetector.adc().read();
return null;
}
});