2011-11-05 111 views
9

剛剛得到了一個Arduino,我搞亂了燈光的一些問題。Arduino的RGB LED問題

我相信我使用的是共陽極引線,所以我有三個顏色的引腳通過一個270歐姆的電阻到Arduino上的10,11和12。最後一個被直接連接到VSS。

就像這樣:http://www.instructables.com/id/RGB-LED-Tutorial-using-an-Arduino-RGBL/step2/Testing/

現在,它是相反的工作是什麼我會預測。當我寫analogWrite(red, 0)時,指示燈呈紅色亮起,255指示燈完全熄滅。

現在,根據0-254調整值幾乎不會調整亮度。 255閃爍一秒後完全關閉。

任何人都可以解釋究竟發生了什麼?

+1

嗯...... 12腳是不是對我一個Arduino的PWM引腳。所以'analogWrite'將不會像該引腳所期望的那樣工作。 –

回答

9

您的LED是共陽極,所以它的工作原理與普通陰極相反。試試這個:

int PWM_value = xxx; 
analogWrite(red, 255 - PWM_value); 
3

AS A.H.指出,Pin 12不是PWM pin。 嘗試更改您的代碼以使用引腳9,10,11而不是10,11,12,並再次使用它。

這裏的文件樣本的修改版本來說明這個想法:

int rPin = 9;  
int gPin = 10;  
int bPin = 11;  
int analogPin = 0; // potentiometer connected to analog pin 0 
int val = 0;   // variable to store the read value 

void setup() 
{ 
    pinMode(rPin, OUTPUT); // sets the pin as output 
    pinMode(gPin, OUTPUT); // sets the pin as output 
    pinMode(bPin, OUTPUT); // sets the pin as output 
} 

void loop() 
{ 
    val = analogRead(analogPin); // read the input pin 
    analogWrite(rPin, val/4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 
    analogWrite(gPin, val/4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 
    analogWrite(bPin, val/4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 
} 

請注意,你需要掛接到模擬引腳0改變導致值的傳感器。

1
[http://arduino.cc/en/Reference/analogWrite][1] 

在這裏,你沒有改變anything.Just更新PWM引腳