Arduino RGB LED问题

9
我刚买了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会完全关闭。
有人能解释一下到底发生了什么吗?

1
嗯...在我的Arduino上,引脚12不是PWM引脚。因此,analogWrite对于该引脚的工作效果将不如预期。 - A.H.
2个回答

9
你的LED是共阳极的,因此它与共阴极相反。尝试这样做:
int PWM_value = xxx;
analogWrite(red, 255 - PWM_value);

3

正如A.H.所指出的那样,引脚12不是一个PWM引脚。 尝试将代码更改为使用引脚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值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接