155浏览
查看: 155|回复: 28

[项目] 【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

[复制链接]
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块 TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块


【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图2

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

驴友花雕  中级技神
 楼主|

发表于 昨天 11:44

【花雕学编程】Arduino动手做(188)--TSL2561读取全光谱值

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  项目之五:TSL2561 传感器使用Adafruit类库的通用测试

实验开源代码

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


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 11:15

【花雕学编程】Arduino动手做(188)--TSL2561读取全光谱值

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  项目之四:使用 TSL2561 传感器读取全光谱四类数据

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  4.   项目之四:使用 TSL2561 传感器读取全光谱四类数据
  5. */
  6. #include <Wire.h>
  7. #include "TSL2561.h"
  8. // Example for demonstrating the TSL2561 library - public domain!
  9. // connect SCL to analog 5
  10. // connect SDA to analog 4
  11. // connect VDD to 3.3V DC
  12. // connect GROUND to common ground
  13. // ADDR can be connected to ground, or vdd or left floating to change the i2c address
  14. // The address will be different depending on whether you let
  15. // the ADDR pin float (addr 0x39), or tie it to ground or vcc. In those cases
  16. // use TSL2561_ADDR_LOW (0x29) or TSL2561_ADDR_HIGH (0x49) respectively
  17. TSL2561 tsl(TSL2561_ADDR_FLOAT);
  18. void setup(void) {
  19.   Serial.begin(9600);
  20.   
  21.   if (tsl.begin()) {
  22.     Serial.println("Found sensor");
  23.   } else {
  24.     Serial.println("No sensor?");
  25.     while (1);
  26.   }
  27.    
  28.   // You can change the gain on the fly, to adapt to brighter/dimmer light situations
  29.   //tsl.setGain(TSL2561_GAIN_0X);         // set no gain (for bright situtations)
  30.   tsl.setGain(TSL2561_GAIN_16X);      // set 16x gain (for dim situations)
  31.   
  32.   // Changing the integration time gives you a longer time over which to sense light
  33.   // longer timelines are slower, but are good in very low light situtations!
  34.   tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);  // shortest integration time (bright light)
  35.   //tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS);  // medium integration time (medium light)
  36.   //tsl.setTiming(TSL2561_INTEGRATIONTIME_402MS);  // longest integration time (dim light)
  37.   
  38.   // Now we're ready to get readings!
  39. }
  40. void loop(void) {
  41.   // Simple data read example. Just read the infrared, fullspecrtrum diode
  42.   // or 'visible' (difference between the two) channels.
  43.   // This can take 13-402 milliseconds! Uncomment whichever of the following you want to read
  44.   uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE);     
  45.   //uint16_t x = tsl.getLuminosity(TSL2561_FULLSPECTRUM);
  46.   //uint16_t x = tsl.getLuminosity(TSL2561_INFRARED);
  47.   
  48.   Serial.println(x, DEC);
  49.   // More advanced data read example. Read 32 bits with top 16 bits IR, bottom 16 bits full spectrum
  50.   // That way you can do whatever math and comparisons you want!
  51.   uint32_t lum = tsl.getFullLuminosity();
  52.   uint16_t ir, full;
  53.   ir = lum >> 16;
  54.   full = lum & 0xFFFF;
  55.   Serial.print("IR: "); Serial.print(ir);   Serial.print("\t\t");
  56.   Serial.print("Full: "); Serial.print(full);   Serial.print("\t");
  57.   Serial.print("Visible: "); Serial.print(full - ir);   Serial.print("\t");
  58.   
  59.   Serial.print("Lux: "); Serial.println(tsl.calculateLux(full, ir));
  60.   
  61.   delay(100);
  62. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:26

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

TSL2561 是 TAOS(现属于德州仪器)公司生产的一款环境光传感器。

1、基本概述
TSL2561 能感知周围环境的光照强度,其内置了两个光敏二极管,分别对可见光和红外光敏感,通过对这两个光敏二极管输出信号的处理,可以计算出环境光的强度,并且能够将光信号转化为数字信号,通过 I²C 接口输出,便于与微控制器(如 Arduino、ESP32 等)进行连接和通信。

2、主要特性
1. 宽动态范围:可检测的光照强度范围很宽,从 0.1 lux 到 40,000 lux,能适应从微弱光线到强光的不同环境,比如室内昏暗的灯光环境到室外明亮的阳光环境都能准确测量。
2. 高灵敏度:对光线变化非常敏感,能够检测到微小的光照强度变化,适合用于需要精确光照检测的应用场景。
3. 可编程增益和积分时间:用户可以根据实际需求调整传感器的增益和积分时间,以优化在不同光照条件下的测量精度。例如,在低光照环境下可以增大增益和积分时间来提高测量灵敏度。
4. I²C 接口:采用 I²C 通信协议与微控制器进行数据传输,这种接口方式简单且通用,方便与各种开发板集成。
5. 低功耗:工作电流低,适合电池供电的设备使用,能有效延长设备的续航时间。

3、应用场景
1. 智能照明系统:根据环境光强度自动调节室内灯光的亮度,实现节能和舒适的照明效果。例如,在白天光线充足时降低灯光亮度,在夜晚光线较暗时提高灯光亮度。
2. 显示屏亮度调节:用于手机、平板电脑、笔记本电脑等设备,根据环境光强度自动调整显示屏的亮度,提供更好的视觉体验,同时也能节省电量。
3. 农业和园艺:在温室种植中,监测光照强度,帮助控制植物生长环境,确保植物获得适宜的光照。
4. 安防监控:根据环境光强度自动调整监控摄像头的曝光参数,保证在不同光照条件下都能拍摄到清晰的图像。

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:37

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

TSL2561 是一款价格低廉但功能复杂的光传感器。与光敏电阻和光电二极管等更简单的传感器不同,TSL2561 集成了红外和可见光传感器,以更好地接近人眼的反应。由于 TSL2561 是一个集成传感器(它会在预定时间内吸收光线),因此它能够测量非常小和非常大的光量。功能包括:
1、板载 5V-3.3V LDO,支持 5V 供电
TSL2561 Luminosity Sensor Breakout 是一款精密的光传感器,在大部分可见光谱中具有平坦的响应。
2、与更简单的传感器不同,TSL2561 可以同时测量红外光和可见光,以更好地接近人眼的反应。
3、由于 TSL2561 是一个积分传感器(它在预定的时间内吸收光),因此它能够通过改变积分时间来测量少量和大量光线。
4、TSL2561 能够进行直接 I2C 通信,并且能够轻松传导 0.1 – 40k+ Lux 的特定光范围。
5、此外,该TSL12561还包含两个积分模数转换器 (ADC),可同时集成来自两个光电二极管的电流。内置 ADC 意味着您可以将其与任何微控制器一起使用,即使它没有模拟输入。
6、电流消耗极低,因此非常适合低功耗数据记录系统。主动感应时约为 0.5mA,在掉电模式下小于 15 uA。
7、注意! 电路板可以在 5V 电压下工作(连接到 Vin),但逻辑(I2C 总线)可以在 3.3V 下工作。

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图2

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:41

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

TSL2560 和 TSL2561 是第二代环境光传感器设备。每个都包含两个积分模数转换器 (ADC),用于集成来自两个光电二极管的电流。两个通道的积分同时发生。转换周期完成后,转换结果将分别传输到通道 0 和通道 1 数据寄存器。传输是双缓冲的,以确保维护数据的完整性。传输后,设备会自动开始下一个集成周期。与器件的通信通过标准的双线 SMBus 或 I2C 串行总线完成。

因此,TSL256x 器件可以轻松连接到微控制器或嵌入式控制器。信号调节不需要外部电路,因此也节省了 PCB 空间。由于 TSL256x 器件的输出是数字的,因此与模拟信号相比,输出有效地不受噪声影响。

TSL256x 器件还支持中断功能,无需轮询传感器以获取光强度值,从而简化和提高系统效率。中断函数的主要目的是检测光强度的有意义变化。用户可以根据光强度和强度变化的时间或持久性来定义有意义变化的概念。TSL256x 器件能够定义高于和低于当前光照水平的阈值。当 conversion 的值超过这些限制中的任何一个时,将生成中断。

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:43

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

TSL2561模块电原理图

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:53

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

TSL2561 传感器的引脚详细说明:

• VCC:此引脚用于传感器的电源。它必须连接到 5V 电源。
• GND:GND 引脚(Ground)是传感器的电气接地。
• SLC:SLC 代表“串行时钟”,用于 I2C 通信。
• SDA:SDA 代表“串行数据”,也用于 I2C 通信。
• INT:INT 引脚(中断)用于配置传感器的 I2C 地址。

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:54

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

实验模块接线示意图——Arduino uno

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图2

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 前天 20:57

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

实验模块接线示意图——ESP32

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图2

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 05:38

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

搜索并安装TSL2561库

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 08:50

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

安装了第二个驱动库

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 08:57

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  项目之一:使用 TSL2561 光照传感器读取光强数据

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  4.   项目之一:使用 TSL2561 光照传感器读取光强数据
  5. */
  6. #include <Wire.h>
  7. #include "TSL2561.h"
  8. TSL2561 tsl(TSL2561_ADDR_FLOAT);
  9. void setup(void) {
  10.   Serial.begin(9600);
  11.   if (tsl.begin()) {
  12.     Serial.println("找到传感器");
  13.   } else {
  14.     Serial.println("没有检测到传感器?");
  15.     while (1);
  16.   }
  17.   tsl.setGain(TSL2561_GAIN_16X);
  18.   tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);
  19. }
  20. void loop(void) {
  21.   uint16_t luminosite = tsl.getLuminosity(TSL2561_VISIBLE);
  22.   Serial.print("亮度:");
  23.   Serial.print(luminosite);
  24.   Serial.println(" Lux");
  25.   delay(1000);
  26. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 09:02

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

代码解读

这段代码使用 TSL2561 光照传感器 读取光强数据,并通过 串口打印亮度值(Lux),核心逻辑如下:

1. 初始化
✅ #include <Wire.h> → 使用 I2C 进行通信
✅ TSL2561 tsl(TSL2561_ADDR_FLOAT); → 初始化 TSL2561 传感器
✅ Serial.begin(9600); → 启动串口通信,波特率 9600

2. 传感器检测
✅ if (tsl.begin()) { Serial.println("Capteur trouvé"); } → 检查是否找到传感器
✅ else { Serial.println("Aucun capteur détecté ?"); while(1); } → 未找到传感器时进入死循环

3. 传感器设置
✅ tsl.setGain(TSL2561_GAIN_16X); → 设置增益 16 倍,提高检测精度
✅ tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS); → 设置积分时间 13ms

4. 读取光照数据
✅ uint16_t luminosite = tsl.getLuminosity(TSL2561_VISIBLE); → 获取可见光强度
✅ Serial.print("Luminosité : "); Serial.print(luminosite); Serial.println(" Lux"); → 打印光照数据(单位 Lux)

5. 循环读取
✅ delay(1000); → 每 1 秒读取一次光照数据
这段代码让 TSL2561 传感器每秒读取一次光照强度,并在串口打印 Lux 值

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 09:09

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

实验串口返回情况

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 09:14

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

实验场景图  

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:28

【花雕学编程】Arduino动手做(188)---TSL2561显示光强波形

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  项目之二:读取光强数据显示为动态波形

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  4.   项目之二:读取光强数据显示为动态波形
  5. */
  6. #include <Wire.h>
  7. #include "TSL2561.h"
  8. TSL2561 tsl(TSL2561_ADDR_FLOAT);
  9. void setup() {
  10.     Serial.begin(9600);
  11.     if (tsl.begin()) {
  12.         Serial.println("找到传感器");
  13.     } else {
  14.         Serial.println("没有检测到传感器?");
  15.         while (1);
  16.     }
  17.     tsl.setGain(TSL2561_GAIN_16X);
  18.     tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);
  19. }
  20. void loop() {
  21.     uint16_t luminosite = tsl.getLuminosity(TSL2561_VISIBLE);
  22.     Serial.println(luminosite);  // **只打印光强数值,适配绘图器**
  23.    
  24.     delay(100);  // **降低刷新间隔,使波形更流畅**
  25. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:31

【花雕学编程】Arduino动手做(188)---TSL2561显示光强波形

代码简单解读

这段代码使用 TSL2561 传感器 读取光照强度,并通过 绘图器(Serial Plotter) 实时显示 光强波形,核心逻辑如下:

1. 初始化
✅ tsl.begin(); → 检查传感器是否连接正常
✅ tsl.setGain(TSL2561_GAIN_16X); → 设置增益 16 倍,提高检测精度
✅ tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS); → 设定积分时间 13ms

2. 读取光照数据
✅ uint16_t luminosite = tsl.getLuminosity(TSL2561_VISIBLE); → 获取可见光亮度
✅ Serial.println(luminosite); → 直接输出数值,适配 Serial Plotter

3. 绘图器显示光强波形
✅ Arduino Serial Plotter 读取连续数据,自动生成 实时光强曲线
✅ 刷新间隔 → delay(100); 让数据更新更快,形成流畅波形

这段代码让 TSL2561 传感器不断测量光照强度,并在绘图器上显示光强变化曲线





回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:33

【花雕学编程】Arduino动手做(188)---TSL2561显示光强波形

实验串口绘图器返回情况

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图2

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图3
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:48

【花雕学编程】Arduino动手做(188)--TSL2561读取红外线...

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  项目之三:使用 TSL2561 传感器读取红外线强度数据(IR)

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百八十八:TSL2561数字I2C环境光传感器 GY-2561光照强度检测模块
  4.   项目之三:使用 TSL2561 传感器读取红外线强度数据(IR)
  5. */
  6. #include <Wire.h>
  7. #include "TSL2561.h"
  8. TSL2561 tsl(TSL2561_ADDR_FLOAT);
  9. void setup() {
  10.   Serial.begin(9600);
  11.   if (tsl.begin()) {
  12.     Serial.println("找到传感器");
  13.   } else {
  14.     Serial.println("没有检测到传感器?");
  15.     while (1);
  16.   }
  17.   tsl.setGain(TSL2561_GAIN_16X);
  18.   tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);
  19. }
  20. void loop() {
  21.   uint16_t ir_luminosite = tsl.getLuminosity(TSL2561_INFRARED); // **获取红外线强度**
  22.   Serial.print("红外线强度:");
  23.   Serial.print(ir_luminosite);
  24.   Serial.println(" Lux");
  25.   delay(1000);  // **每秒读取一次**
  26. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:52

【花雕学编程】Arduino动手做(188)--TSL2561读取红外线...

代码简单解读

这段代码使用 TSL2561 传感器 读取 红外光强度 并通过 串口打印 Lux 值,核心逻辑如下:

1. 初始化
✅ tsl.begin(); → 检查传感器是否连接正常
✅ tsl.setGain(TSL2561_GAIN_16X); → 设置 16 倍增益,提高测量精度
✅ tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS); → 设定 13ms 积分时间

2. 获取红外光数据
✅ uint16_t ir_luminosite = tsl.getLuminosity(TSL2561_INFRARED); → 读取红外光强度
✅ Serial.print("红外线强度:"); Serial.print(ir_luminosite); Serial.println(" Lux"); → 打印红外光强度 Lux 值

3. 定期采集数据
✅ delay(1000); → 每 1 秒获取一次红外光照数据

这段代码让 TSL2561 传感器定期获取红外光强度,并显示在串口监视器上。





回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 10:54

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器

实验场景图

【花雕学编程】Arduino动手做(188)---TSL2561环境光传感器图1
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail