#include #include #include #include "fdrs_node_config.h" #include Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); /**************************************************************************/ /* Configures the gain and integration time for the TSL2561 */ /**************************************************************************/ void configureSensor(void) { /* You can also manually set the gain or enable auto-gain support */ // tsl.setGain(TSL2561_GAIN_1X); /* No gain ... use in bright light to avoid sensor saturation */ // tsl.setGain(TSL2561_GAIN_16X); /* 16x gain ... use in low light to boost sensitivity */ tsl.enableAutoRange(true); /* Auto-gain ... switches automatically between 1x and 16x */ /* Changing the integration time gives you better sensor resolution (402ms = 16-bit data) */ tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); /* fast but low resolution */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS); /* medium resolution and speed */ // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* 16-bit data but slowest conversions */ } /**************************************************************************/ /* Arduino setup function (automatically called at startup) */ /**************************************************************************/ void setup(void) { beginFDRS(); /* Initialise the sensor */ //use tsl.begin() to default to Wire, //tsl.begin(&Wire2) directs api to use Wire2, etc. if(!tsl.begin()) { DBG("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!"); while(1); } configureSensor(); } void loop(void) { sensors_event_t event; tsl.getEvent(&event); if (event.light) { DBG(String(event.light) + " lux"); loadFDRS(float(event.light), LIGHT_T); sendFDRS(); sleepFDRS(10); //Sleep time in seconds } else { /* If event.light = 0 lux the sensor is probably saturated and no reliable data could be generated! */ Serial.println("Sensor overload"); } delay(250); }