我一直在与Arduino合作开展一个项目,并且遇到了一些令我着迷/困惑的事情。所以,在构建这个项目之前,我必须测试一下。我建立了一个简单的电路,它只包含一个LED和光敏电阻。我必须测试的是光敏电阻是否能够确定通过PWM调暗的LED的亮度。我最初的期望是这不起作用(光敏电阻将读取1023或0,因为PWM是以数字方式实现的)。令我惊讶的是,光敏电阻能够精确读取LED的亮度(精确到一定程度 - 这仅仅是基于将PWM LED的亮度与串联一个电阻的LED进行比较)!这正是我想要的,但我只是好奇为什么这样做。我不确定我最初的怀疑是由于对光敏电阻或PWM的误解。任何帮助将非常感激。谢谢!
这是我正在运行的代码(我没有使用analogWrite()函数,因为我正在处理的项目要求我对PWM有一定程度的控制权):
const int LED_PIN = 9;
const int PHOTO_PIN = 0;
//These values have been altered and tested
const int HIGH_TIME = 250;
const int LOW_TIME = 2750;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(PHOTO_PIN, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(LED_PIN, HIGH);
delayMicroseconds(HIGH_TIME);
digitalWrite(LED_PIN, LOW);
delayMicroseconds(LOW_TIME);
Serial.println(analogRead(PHOTO_PIN));
}
答案 0 :(得分:0)
“光敏电阻”是可变电阻器。这是最简单的说法。
想象一下你的电位器,你可以通过旋转小旋钮然后analogRead
来控制它的电阻。另一侧的光敏电阻根据光强度改变其电阻。因此,电阻会根据您的LED上下波动。
对于“如何”它确实有效,请参阅here。
现在,有几个因素需要考虑:
1 - 房间的环境光。
2 - LED之间的距离
希望我帮助你学习更多有关光敏电阻的知识!
答案 1 :(得分:0)
光电阻的响应时间比您使用的PWM频率慢得多。因此,它平均LED的开启和关闭时间,并给出与平均光线成比例的电阻。如果您使用具有快速响应时间的光电二极管,它将能够“看到”LED开启和关闭。
我建议你不要每次都通过循环写入串口,因为它会很快落在9600波特。也许每循环写500次。