c - 为什么此代码会使 LED 发红光?

标签 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 实际闪烁。为什么会这样?我该如何解决?

如有任何帮助,我们将不胜感激!

更新:

当我完全拔掉红线时,程序按预期运行,但现在,当我重新插入时,它会像这样闪烁:

白色 红色的 白色的 红色

现在的问题是什么?

最佳答案

您的问题是您没有关闭红色 LED。关闭意味着它需要一个 HIGH 在引脚上,因为您有一个公共(public)阳极配置,所以当电压为 LOW(不是 HIGH).

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

所以在setup()中加入:

 digitalWrite(redled, HIGH);

关于c - 为什么此代码会使 LED 发红光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27890141/

相关文章:

c - 如何知道应用程序的启动点

c - 在 SSL 上下文中加载两个服务器证书

c++ - 如何使用 cl 编译器在 Windows 中启动 arduino

c++ - 你如何在 Arduino 上包含 clock_t?

c++ - 用 double 计算 pow 会给出错误的结果

c - Arduino WaveHC 收集文件名

无法在赋值中将 'float*' 转换为 'float'

c++ - fpga:选择c++来编程fpga

c - 导致C中无限循环的逻辑错误

C - 传递 json_t (jansson lib) 作为参数(指针)