写一段arduino光控led灯亮度代码,光线越亮,灯越暗,反之光线越暗灯越亮
时间: 2024-10-01 18:09:44 浏览: 98
GPIO.zip_8266闪灯代码_GPIO使led灯轮流_GPIO灯泡轮流亮
在Arduino中,我们可以使用光敏电阻(如LDR)感知环境光线,并通过改变LED的亮度来模拟这种反馈机制。以下是一个简单的代码示例,假设你已经连接了一个LDR和一个PWM可控的LED:
```cpp
const int lightSensorPin = A0; // 光敏电阻的连接引脚
const int ledPin = 9; // PWM控制LED的引脚
int lightValue = 0; // 存储光照强度
void setup() {
pinMode(lightSensorPin, INPUT); // 设置光敏电阻为输入模式
pinMode(ledPin, OUTPUT); // 设置LED为PWM输出模式
}
void loop() {
lightValue = analogRead(lightSensorPin); // 读取光敏电阻值,范围0-1023
float brightness = map(lightValue, 0, 1023, 255, 0); // 将光照映射到0-255的范围内,光线越亮越小
analogWrite(ledPin, brightness); // 根据亮度调整LED的亮度
}
```
在这个代码里,`analogRead()`函数获取从光敏电阻来的电压值,然后通过`map()`函数将其转换成0到255的范围(通常LED的亮度也是这个范围)。当光线变亮时,`lightValue`会增大,导致LED亮度减小;相反,光线变暗时,LED亮度增加。
阅读全文