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

Committer:
kenjiArai
Date:
Fri Sep 21 22:57:07 2018 +0000
Revision:
5:5b1b625fda6f
based on Adafruit program and keep interface functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 5:5b1b625fda6f 1 #include <Wire.h>
kenjiArai 5:5b1b625fda6f 2 #include <Adafruit_Sensor.h>
kenjiArai 5:5b1b625fda6f 3 #include <Adafruit_TSL2561_U.h>
kenjiArai 5:5b1b625fda6f 4
kenjiArai 5:5b1b625fda6f 5 /* This driver uses the Adafruit unified sensor library (Adafruit_Sensor),
kenjiArai 5:5b1b625fda6f 6 which provides a common 'type' for sensor data and some helper functions.
kenjiArai 5:5b1b625fda6f 7
kenjiArai 5:5b1b625fda6f 8 To use this driver you will also need to download the Adafruit_Sensor
kenjiArai 5:5b1b625fda6f 9 library and include it in your libraries folder.
kenjiArai 5:5b1b625fda6f 10
kenjiArai 5:5b1b625fda6f 11 You should also assign a unique ID to this sensor for use with
kenjiArai 5:5b1b625fda6f 12 the Adafruit Sensor API so that you can identify this particular
kenjiArai 5:5b1b625fda6f 13 sensor in any data logs, etc. To assign a unique ID, simply
kenjiArai 5:5b1b625fda6f 14 provide an appropriate value in the constructor below (12345
kenjiArai 5:5b1b625fda6f 15 is used by default in this example).
kenjiArai 5:5b1b625fda6f 16
kenjiArai 5:5b1b625fda6f 17 Connections
kenjiArai 5:5b1b625fda6f 18 ===========
kenjiArai 5:5b1b625fda6f 19 Connect SCL to I2C SCL Clock
kenjiArai 5:5b1b625fda6f 20 Connect SDA to I2C SDA Data
kenjiArai 5:5b1b625fda6f 21 Connect VDD to 3.3V or 5V (whatever your logic level is)
kenjiArai 5:5b1b625fda6f 22 Connect GROUND to common ground
kenjiArai 5:5b1b625fda6f 23
kenjiArai 5:5b1b625fda6f 24 I2C Address
kenjiArai 5:5b1b625fda6f 25 ===========
kenjiArai 5:5b1b625fda6f 26 The address will be different depending on whether you leave
kenjiArai 5:5b1b625fda6f 27 the ADDR pin floating (addr 0x39), or tie it to ground or vcc.
kenjiArai 5:5b1b625fda6f 28 The default addess is 0x39, which assumes the ADDR pin is floating
kenjiArai 5:5b1b625fda6f 29 (not connected to anything). If you set the ADDR pin high
kenjiArai 5:5b1b625fda6f 30 or low, use TSL2561_ADDR_HIGH (0x49) or TSL2561_ADDR_LOW
kenjiArai 5:5b1b625fda6f 31 (0x29) respectively.
kenjiArai 5:5b1b625fda6f 32
kenjiArai 5:5b1b625fda6f 33 History
kenjiArai 5:5b1b625fda6f 34 =======
kenjiArai 5:5b1b625fda6f 35 2013/JAN/31 - First version (KTOWN)
kenjiArai 5:5b1b625fda6f 36 */
kenjiArai 5:5b1b625fda6f 37
kenjiArai 5:5b1b625fda6f 38 Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);
kenjiArai 5:5b1b625fda6f 39
kenjiArai 5:5b1b625fda6f 40 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 41 /*
kenjiArai 5:5b1b625fda6f 42 Displays some basic information on this sensor from the unified
kenjiArai 5:5b1b625fda6f 43 sensor API sensor_t type (see Adafruit_Sensor for more information)
kenjiArai 5:5b1b625fda6f 44 */
kenjiArai 5:5b1b625fda6f 45 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 46 void displaySensorDetails(void)
kenjiArai 5:5b1b625fda6f 47 {
kenjiArai 5:5b1b625fda6f 48 sensor_t sensor;
kenjiArai 5:5b1b625fda6f 49 tsl.getSensor(&sensor);
kenjiArai 5:5b1b625fda6f 50 Serial.println("------------------------------------");
kenjiArai 5:5b1b625fda6f 51 Serial.print ("Sensor: "); Serial.println(sensor.name);
kenjiArai 5:5b1b625fda6f 52 Serial.print ("Driver Ver: "); Serial.println(sensor.version);
kenjiArai 5:5b1b625fda6f 53 Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id);
kenjiArai 5:5b1b625fda6f 54 Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" lux");
kenjiArai 5:5b1b625fda6f 55 Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" lux");
kenjiArai 5:5b1b625fda6f 56 Serial.print ("Resolution: "); Serial.print(sensor.resolution); Serial.println(" lux");
kenjiArai 5:5b1b625fda6f 57 Serial.println("------------------------------------");
kenjiArai 5:5b1b625fda6f 58 Serial.println("");
kenjiArai 5:5b1b625fda6f 59 delay(500);
kenjiArai 5:5b1b625fda6f 60 }
kenjiArai 5:5b1b625fda6f 61
kenjiArai 5:5b1b625fda6f 62 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 63 /*
kenjiArai 5:5b1b625fda6f 64 Configures the gain and integration time for the TSL2561
kenjiArai 5:5b1b625fda6f 65 */
kenjiArai 5:5b1b625fda6f 66 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 67 void configureSensor(void)
kenjiArai 5:5b1b625fda6f 68 {
kenjiArai 5:5b1b625fda6f 69 /* You can also manually set the gain or enable auto-gain support */
kenjiArai 5:5b1b625fda6f 70 // tsl.setGain(TSL2561_GAIN_1X); /* No gain ... use in bright light to avoid sensor saturation */
kenjiArai 5:5b1b625fda6f 71 // tsl.setGain(TSL2561_GAIN_16X); /* 16x gain ... use in low light to boost sensitivity */
kenjiArai 5:5b1b625fda6f 72 tsl.enableAutoRange(true); /* Auto-gain ... switches automatically between 1x and 16x */
kenjiArai 5:5b1b625fda6f 73
kenjiArai 5:5b1b625fda6f 74 /* Changing the integration time gives you better sensor resolution (402ms = 16-bit data) */
kenjiArai 5:5b1b625fda6f 75 tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS); /* fast but low resolution */
kenjiArai 5:5b1b625fda6f 76 // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_101MS); /* medium resolution and speed */
kenjiArai 5:5b1b625fda6f 77 // tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_402MS); /* 16-bit data but slowest conversions */
kenjiArai 5:5b1b625fda6f 78
kenjiArai 5:5b1b625fda6f 79 /* Update these values depending on what you've set above! */
kenjiArai 5:5b1b625fda6f 80 Serial.println("------------------------------------");
kenjiArai 5:5b1b625fda6f 81 Serial.print ("Gain: "); Serial.println("Auto");
kenjiArai 5:5b1b625fda6f 82 Serial.print ("Timing: "); Serial.println("13 ms");
kenjiArai 5:5b1b625fda6f 83 Serial.println("------------------------------------");
kenjiArai 5:5b1b625fda6f 84 }
kenjiArai 5:5b1b625fda6f 85
kenjiArai 5:5b1b625fda6f 86 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 87 /*
kenjiArai 5:5b1b625fda6f 88 Arduino setup function (automatically called at startup)
kenjiArai 5:5b1b625fda6f 89 */
kenjiArai 5:5b1b625fda6f 90 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 91 void setup(void)
kenjiArai 5:5b1b625fda6f 92 {
kenjiArai 5:5b1b625fda6f 93 Serial.begin(9600);
kenjiArai 5:5b1b625fda6f 94 Serial.println("Light Sensor Test"); Serial.println("");
kenjiArai 5:5b1b625fda6f 95
kenjiArai 5:5b1b625fda6f 96 /* Initialise the sensor */
kenjiArai 5:5b1b625fda6f 97 //use tsl.begin() to default to Wire,
kenjiArai 5:5b1b625fda6f 98 //tsl.begin(&Wire2) directs api to use Wire2, etc.
kenjiArai 5:5b1b625fda6f 99 if(!tsl.begin())
kenjiArai 5:5b1b625fda6f 100 {
kenjiArai 5:5b1b625fda6f 101 /* There was a problem detecting the TSL2561 ... check your connections */
kenjiArai 5:5b1b625fda6f 102 Serial.print("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!");
kenjiArai 5:5b1b625fda6f 103 while(1);
kenjiArai 5:5b1b625fda6f 104 }
kenjiArai 5:5b1b625fda6f 105
kenjiArai 5:5b1b625fda6f 106 /* Display some basic information on this sensor */
kenjiArai 5:5b1b625fda6f 107 displaySensorDetails();
kenjiArai 5:5b1b625fda6f 108
kenjiArai 5:5b1b625fda6f 109 /* Setup the sensor gain and integration time */
kenjiArai 5:5b1b625fda6f 110 configureSensor();
kenjiArai 5:5b1b625fda6f 111
kenjiArai 5:5b1b625fda6f 112 /* We're ready to go! */
kenjiArai 5:5b1b625fda6f 113 Serial.println("");
kenjiArai 5:5b1b625fda6f 114 }
kenjiArai 5:5b1b625fda6f 115
kenjiArai 5:5b1b625fda6f 116 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 117 /*
kenjiArai 5:5b1b625fda6f 118 Arduino loop function, called once 'setup' is complete (your own code
kenjiArai 5:5b1b625fda6f 119 should go here)
kenjiArai 5:5b1b625fda6f 120 */
kenjiArai 5:5b1b625fda6f 121 /**************************************************************************/
kenjiArai 5:5b1b625fda6f 122 void loop(void)
kenjiArai 5:5b1b625fda6f 123 {
kenjiArai 5:5b1b625fda6f 124 /* Get a new sensor event */
kenjiArai 5:5b1b625fda6f 125 sensors_event_t event;
kenjiArai 5:5b1b625fda6f 126 tsl.getEvent(&event);
kenjiArai 5:5b1b625fda6f 127
kenjiArai 5:5b1b625fda6f 128 /* Display the results (light is measured in lux) */
kenjiArai 5:5b1b625fda6f 129 if (event.light)
kenjiArai 5:5b1b625fda6f 130 {
kenjiArai 5:5b1b625fda6f 131 Serial.print(event.light); Serial.println(" lux");
kenjiArai 5:5b1b625fda6f 132 }
kenjiArai 5:5b1b625fda6f 133 else
kenjiArai 5:5b1b625fda6f 134 {
kenjiArai 5:5b1b625fda6f 135 /* If event.light = 0 lux the sensor is probably saturated
kenjiArai 5:5b1b625fda6f 136 and no reliable data could be generated! */
kenjiArai 5:5b1b625fda6f 137 Serial.println("Sensor overload");
kenjiArai 5:5b1b625fda6f 138 }
kenjiArai 5:5b1b625fda6f 139 delay(250);
kenjiArai 5:5b1b625fda6f 140 }