2016-11-11 212 views
0

我一直在与Arduino一起开发一个项目,并且遇到了一些令我感到迷惑或困惑的东西。所以,我在构建这个项目之前必须测试一些东西。我建立了一个由LED和光敏电阻组成的简单电路。我必须测试的是,光敏电阻能否确定通过PWM变暗的LED的亮度。我最初的期望是,这是行不通的(光敏电阻将读取1023或0,因为PWM是数字化实现的)。令我惊讶的是,光敏电阻能够准确地读取LED的亮度(准确地说在一定程度上 - 这只是基于比较PWM LED的视在亮度和与特定电阻串联的LED)。这正是我想要的,但我只是好奇为什么这个工作。我不确定我原来的疑问是否是由于对光敏电阻或PWM的误解。任何帮助将非常感激。谢谢!Arduino:在光敏电阻上使用analogRead()来读取带PWM的LED

这里是我运行的代码(我不使用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

一“光敏电阻”是一个可变电阻。这是最简单的说法。

想象一下你的电位器,你可以通过旋转小旋钮来控制它的电阻值,然后analogRead它。另一侧的光敏电阻根据光强度改变其电阻。正因为如此,阻力会根据您的LED而升降。

对于“如何”它实际工作,请参阅here

现在,有几个因素需要考虑:

1 - 你的房间的环境光。

2 - 你之间的距离LED

所以希望我帮您了解更多一点关于光敏电阻!

0

照片电阻器的响应时间比您所使用的的PWM频率要慢得多。所以它平均LED的开关时间,并给出与平均光成正比的电阻。如果您使用的光电二极管响应速度快,则可以“看到”LED指示灯的开启和关闭。

我建议你不要尝试通过循环每次写串口,因为它会很快在9600波特落后。也许在循环中每500次写一次。