Arduino RGB LED问题

时间:2011-11-05 02:05:23

标签: arduino

刚刚得到一个Arduino,我正在弄乱灯的问题。

我相信我使用的是共阳极LED,所以我有三个颜色的引脚通过一个270欧姆的电阻到arduino上的10,11和12。最后一个直接挂钩到VSS。

很像这样:http://www.instructables.com/id/RGB-LED-Tutorial-using-an-Arduino-RGBL/step2/Testing/

现在,它正在与我预测的相反。当我写analogWrite( red, 0 )时,LED点亮为红色,255点完全关闭。

现在,调整0-254的值几乎不会调整亮度。在闪烁一秒后,255完全关闭。

任何人都可以解释到底发生了什么吗?

3 个答案:

答案 0 :(得分:9)

您的LED是共阳极,因此它与共阴极相反。试试这个:

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

答案 1 :(得分: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的传感器来更改LED值。

答案 2 :(得分:1)

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

这里你没有改变任何东西。只是更新PWM引脚