【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 在黑暗环境下会变亮,在明亮环境下会变暗,适用于 夜间照明 或 自动调节光源。
实验串口返回情况
实验串口绘图器返回情况


实验场景图


评论