回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(255)---TEMT6000模块之根据环境光亮度调整 LED 亮度 简单

头像 驴友花雕 2025.05.13 14 0

00 (26).jpg
01-.jpg
04.jpg
08.jpg

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百五十五:TEMT6000环境光传感器 可见光模拟光照强度检测模块/智能家居
 项目之三:根据环境光亮度调整 LED 亮度(D13)

实验开源代码

 

代码
/*
  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百五十五:TEMT6000环境光传感器 可见光模拟光照强度检测模块/智能家居
  项目之三:根据环境光亮度调整 LED 亮度(D13)
*/

#define LED_PIN 13          // 定义 LED 引脚 (PWM 控制亮度)
#define LIGHT_SENSOR_PIN A0 // 定义光传感器引脚 (模拟输入)

void setup() {
  pinMode(LIGHT_SENSOR_PIN, INPUT);  // 设置光传感器为输入模式
  pinMode(LED_PIN, OUTPUT);          // 设置 LED 引脚为输出模式
  Serial.begin(9600);                // 初始化串口通信,波特率 9600
}

void loop() {
  // 读取光照强度
  float lightLevel = analogRead(LIGHT_SENSOR_PIN);

  // 归一化光照值 (0.0 - 1.0),并反向处理
  float brightnessRatio = 1.0 - (lightLevel / 1023.0); 

  // 平方变换,使亮度变化更明显
  brightnessRatio = pow(brightnessRatio, 2.0);

  // 设置 LED 亮度 (PWM: 0 - 255)
  analogWrite(LED_PIN, 255.0 * brightnessRatio);

  // 输出光照数值和 LED 亮度
  Serial.print("Light Level: ");
  Serial.print(lightLevel);
  Serial.print(" | LED Brightness: ");
  Serial.println(255.0 * brightnessRatio);

  delay(100); // 延迟 100 毫秒,避免数据输出过快
}

简单解读

代码实现了 光暗时 LED 变亮,即环境越暗,LED 的亮度越高。核心逻辑如下:

1、读取光照值:

analogRead(LIGHT_SENSOR_PIN); 获取环境光线强度(范围 0 - 1023)。

brightnessRatio = 1.0 - (lightLevel / 1023.0); 反向处理,光照越低,亮度越高。

2、平方变换:

pow(brightnessRatio, 2.0); 使亮度调整更明显,让 LED 亮度随光暗变化更加线性。

3、设置 LED 亮度:

analogWrite(LED_PIN, 255.0 * brightnessRatio); 让 LED 随环境光变化调整亮度。

4、数据输出到串口:

Serial.print(lightLevel); 显示光照数值。

Serial.print(255.0 * brightnessRatio); 显示 LED 亮度。

5、延迟:

delay(100); 避免数据输出过快。

这样,LED 在黑暗环境下会变亮,在明亮环境下会变暗,适用于 夜间照明 或 自动调节光源。


实验串口返回情况

 

11.jpg


实验串口绘图器返回情况

 

11-.jpg
11-1.jpg


实验场景图

 

11-2.jpg
on-off.gif

 

评论

user-avatar
icon 他的勋章
    展开更多