【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
项目之五:TSL2561 传感器使用Adafruit类库的通用测试
实验开源代码
- /*
- 【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
- 实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
- 项目之五:TSL2561 传感器使用Adafruit类库的通用测试
- */
-
- #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 VCC/VDD to 3.3V or 5V (depends on sensor's logic level, check the datasheet)
- 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);
- }
复制代码
|