gpt4 book ai didi

Arduino AnalogWrite() 两个引脚之间仅在一个方向上工作

转载 作者:行者123 更新时间:2023-12-02 17:21:32 24 4
gpt4 key购买 nike

我有一组 LED,它们设置为每隔一个 LED 反转,因此当我单向通电时,灯 1、3、5...灯。更改电源和 2、4、6... 我正在尝试使用数字引脚上的 PWM 设置亮度。这是我的代码:

unsigned long flashCount = 0;
bool bSwitch = true;

void setup()
{
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}

void loop()
{
if((flashCount + 1000) < millis())
{
if(bSwitch)
{
analogWrite(6, 0);
analogWrite(7, 1);
bSwitch = false;
}
else
{
analogWrite(7, 0);
analogWrite(6, 1);
bSwitch = true;
}
flashCount = millis();
}
}

如果我将 AnalogWrite 更改为 255 而不是 1,它将切换两组 LED。如果我将 AnalogWrite 更改为 127 或更低,则只有一组会亮起。如果我将 LED 线切换到引脚,问题就会切换到另一组灯。

LED灯是这样的:

GPIO pin 6 --------.-LED+.---.-LED+.---.-LED+.---.-LED+.---|
GPIO pin 7 ---.+LED-.---.+LED-.---.+LED-.---.+LED-.--------|

最佳答案

将 LED 的连接更改为都支持 PWM 的引脚。

并非所有引脚都支持 PWM。 analogWrite文档指定了取决于哪个板的引脚:

On most Arduino boards (those with the ATmega168 or ATmega328P), this function works on pins 3, 5, 6, 9, 10, and 11. On the Arduino Mega, it works on pins 2 - 13 and 44 - 46. Older Arduino boards with an ATmega8 only support analogWrite() on pins 9, 10, and 11.

另一个因素是 analogWrite(255)analogWrite(0) 将恢复为将输出驱动为数字输出。因此写入 255 会导致两个引脚输出(一个作为数字输出,另一个作为 PWM 模式)。但将 1 写入 127 只会导致支持 PWM 的引脚发生变化。

关于Arduino AnalogWrite() 两个引脚之间仅在一个方向上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com