如何同时在多个引脚上使用 analogWrite()?

How to use analogWrite() on multiple pins at the same time?

我愿意,

analogWrite(3,100); analogWrite(6,200);

同时。但问题是只有引脚 3 上的 LED 灯亮了。我希望两者同时亮起。我听说过直接端口操作,但我只能找到 digitalWrite() 的替代方法,但找不到 analogWrite() 的替代方法。有人可以帮我举一个简单的例子来说明如何进行上述操作吗?

它是 analogWrite(pin, value) 而不是 analogWrite(value, pin),因为您正在使用它。 交换这些数字应该可以解决您的问题。

https://cdn.arduino.cc/reference/en/language/functions/analog-io/analogWrite/

您使用的代码很好,应该使用脉冲宽度调制将引脚 3 设置为 39% 功率,将引脚 6 设置为 78% 功率。 analogWrite() 取一个介于 0(关闭)和 255(打开)之间的数字。

您应该检查您的引脚和 LED 是否正常工作。你可以通过交换两个 LED 来做到这一点,因为你已经知道你的引脚 3 和它的 LED 工作正常。

您的引脚 6 或 LED 可能损坏或烧毁,或者您可能在引脚 6 处使用了需要更大电流或电压才能点亮的 LED。

Arduino有端口操作功能。要同时打开引脚 3 和 5,请执行

DDRD = B11111110; //set pins 1-7 as output EXCEPT for 0 AT THE SAME TIME
PORTD = B00101000; // sets digital pins 5 and 3 HIGH AT THE SAME TIME
PORTD = B00000000; // sets all digital pins LOW AT THE SAME TIME

AnalogWrite 通过 PWM 工作,因此您可以根据所需的输出电压延迟切换它们。请注意,您不能使用此方法同时打开引脚 2 和 12,因为它们位于不同的寄存器中。我敢肯定,如果你浏览你的 arduino 文件夹,你会发现一个包含 analogWrite 定义的 C/C++ 文件。只需复制它,并将 digitalWrite 替换为下面的端口操作函数。希望这对您有所帮助!

如果您忘记在设置中设置 pinMode,您可能会遇到这种情况:

pinMode(3, OUTPUT);
pinMode(6, OUTPUT);