Luminosity sensor by Texas Advanced Optoelectronic Solutions Inc.. Device combines one broadband photodiode (visible plus infrared) and one infrared-responding photodiode. Sets Gain x1 and 402mS as default.
Dependents: MusicBoxForFathersDay FTHR_SensorHub Affich_Lum_Moist Projetv0 ... more
Diff: Original/sensorapi_ino.txt
- Revision:
- 5:5b1b625fda6f
diff -r 05d322353720 -r 5b1b625fda6f Original/sensorapi_ino.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Original/sensorapi_ino.txt Fri Sep 21 22:57:07 2018 +0000 @@ -0,0 +1,140 @@ +#include <Wire.h> +#include <Adafruit_Sensor.h> +#include <Adafruit_TSL2561_U.h> + +/* This driver uses the Adafruit unified sensor library (Adafruit_Sensor), + which provides a common 'type' for sensor data and some helper functions. + + To use this driver you will also need to download the Adafruit_Sensor + library and include it in your libraries folder. + + You should also assign a unique ID to this sensor for use with + the Adafruit Sensor API so that you can identify this particular + sensor in any data logs, etc. To assign a unique ID, simply + provide an appropriate value in the constructor below (12345 + is used by default in this example). + + Connections + =========== + Connect SCL to I2C SCL Clock + Connect SDA to I2C SDA Data + Connect VDD to 3.3V or 5V (whatever your logic level is) + Connect GROUND to common ground + + I2C Address + =========== + The address will be different depending on whether you leave + the ADDR pin floating (addr 0x39), or tie it to ground or vcc. + The default addess is 0x39, which assumes the ADDR pin is floating + (not connected to anything). If you set the ADDR pin high + or low, use TSL2561_ADDR_HIGH (0x49) or TSL2561_ADDR_LOW + (0x29) respectively. + + History + ======= + 2013/JAN/31 - First version (KTOWN) +*/ + +Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); + +/**************************************************************************/ +/* + Displays some basic information on this sensor from the unified + sensor API sensor_t type (see Adafruit_Sensor for more information) +*/ +/**************************************************************************/ +void displaySensorDetails(void) +{ + sensor_t sensor; + tsl.getSensor(&sensor); + Serial.println("------------------------------------"); + Serial.print ("Sensor: "); Serial.println(sensor.name); + Serial.print ("Driver Ver: "); Serial.println(sensor.version); + Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id); + Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" lux"); + Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" lux"); + Serial.print ("Resolution: "); Serial.print(sensor.resolution); Serial.println(" lux"); + Serial.println("------------------------------------"); + Serial.println(""); + delay(500); +} + +/**************************************************************************/ +/* + 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 */ + + /* Update these values depending on what you've set above! */ + Serial.println("------------------------------------"); + Serial.print ("Gain: "); Serial.println("Auto"); + Serial.print ("Timing: "); Serial.println("13 ms"); + Serial.println("------------------------------------"); +} + +/**************************************************************************/ +/* + Arduino setup function (automatically called at startup) +*/ +/**************************************************************************/ +void setup(void) +{ + Serial.begin(9600); + Serial.println("Light Sensor Test"); Serial.println(""); + + /* Initialise the sensor */ + //use tsl.begin() to default to Wire, + //tsl.begin(&Wire2) directs api to use Wire2, etc. + if(!tsl.begin()) + { + /* There was a problem detecting the TSL2561 ... check your connections */ + Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!"); + while(1); + } + + /* Display some basic information on this sensor */ + displaySensorDetails(); + + /* Setup the sensor gain and integration time */ + configureSensor(); + + /* We're ready to go! */ + Serial.println(""); +} + +/**************************************************************************/ +/* + Arduino loop function, called once 'setup' is complete (your own code + should go here) +*/ +/**************************************************************************/ +void loop(void) +{ + /* Get a new sensor event */ + sensors_event_t event; + tsl.getEvent(&event); + + /* Display the results (light is measured in lux) */ + if (event.light) + { + Serial.print(event.light); Serial.println(" lux"); + } + else + { + /* If event.light = 0 lux the sensor is probably saturated + and no reliable data could be generated! */ + Serial.println("Sensor overload"); + } + delay(250); +}