2016-11-11 266 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次寫一次。