我一直在与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));
}