Color Detector¶
MetaEnvironment boards come equipped with a TCS34725 color detector. Enums and functions for interacting with this sensor are defined in the colordetector_tcs34725.h header file.
Configuration¶
The TCS34725 sensor has 2 configurable parameters that affect the data range and resultion:
Parameter | Description |
---|---|
Gain | Analog signal scale |
Integration Time | Amount of time spent to aggregate adc values |
Afer you configure the API with your desired settings, call mbl_mw_cd_tcs34725_write_config to write the changes to the detector.
#include "metawear/sensor/colordetector_tcs34725.h"
void colordetector_config(MblMwMetaWearBoard* board) {
// set analog gain to 16x
mbl_mw_cd_tcs34725_set_gain(board, MBL_MW_CD_TCS34725_GAIN_16X);
// set integration time to 4.8ms
mbl_mw_cd_tcs34725_set_integration_time(board, 4.8f);
// write the configuration to the sensor
mbl_mw_cd_tcs34725_write_config(board);
}
The MetaWear board also comes with an illuminator LED which can be used to provide additional light when reading the color. To enable the LED, call mbl_mw_cd_tcs34725_enable_illuminator_led before writing the configuration changes.
Color ADC¶
To retrieve color adc, call mbl_mw_datasignal_read with a color adc data signal. Users can use the timer functions (see Timer section) to schedule periodic reads.
#include "metawear/core/datasignal.h"
#include "metawear/core/types.h"
void colordetector_adc_stream(MblMwMetaWearBoard* board) {
auto adc_signal= mbl_mw_cd_tcs34725_get_adc_data_signal(board);
mbl_mw_datasignal_subscribe(adc_signal, [](const MblMwData* data) -> void {
// Cast value to MblMwTcs34725ColorAdc*
auto color_adc = (MblMwTcs34725ColorAdc*) data->value;
printf("{clear: %d, red: %d, green: %d, blue: %d}", color_adc->clear,
color_adc->red, color_adc->green, color_adc->blue);
});
mbl_mw_datasignal_read(adc_signal);
}