为什么这段代码会让led发光变红?

时间:2015-01-11 17:45:52

标签: c arduino

我已经编写了这段简单的代码来测试我的arduino和RGB led。

int redled=11;
int blueled=10;
int greenled=9;

void setup()
{
  pinMode(redled, OUTPUT);
  pinMode(blueled, OUTPUT);
  pinMode(greenled, OUTPUT);
}

void loop()
{
  digitalWrite(greenled, HIGH);
  digitalWrite(blueled, HIGH);
  delay(1000);
  digitalWrite(greenled, LOW);
  digitalWrite(blueled, LOW);
  delay(1000);
}

这是一张图片:

(220Ω电阻,如果你想知道的话。)

正如你所看到的,我已将绿色和蓝色编码为闪烁,但在我将其上传到我的arduino后,红色LED实际上闪烁了。为什么会这样?我该如何解决?

任何帮助将不胜感激!

更新:

当我完全拔掉红线时,程序按预期工作,但现在,当我重新插入时,它会闪烁如下:

WHITE 红色 白色 红色

现在有什么问题?

1 个答案:

答案 0 :(得分:2)

您的问题是您没有关闭红色LED。关闭意味着由于您具有共阳极配置,因此引脚上需要HIGH,因此当电压为LOW(而不是HIGH)时,LED元件会亮起。

您正在闪烁蓝色和绿色输出,但红色引脚始终为低电平。这意味着它已打开(因为共阳极处于+ 5V)。这是因为蓝色+绿色+红色=白色(当蓝色和绿色输出为LOW时),而单独的红色显然是红色(当蓝色和绿色输出为HIGH时)。

添加setup()

 digitalWrite(redled, HIGH);