首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino analogWrite()在两个引脚之间只在一个方向工作

Arduino analogWrite()在两个引脚之间只在一个方向工作
EN

Stack Overflow用户
提问于 2019-02-08 02:00:49
回答 2查看 879关注 0票数 3

我有一套led的设置,每个其他引线反向,所以当我应用权力单向光,1,3,5.灯。改变力量和2,4,6.我正试图在数字引脚上使用PWM来设置亮度。这是我的密码:

代码语言:javascript
复制
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,它将切换两组leds。如果我将analogWrite更改为127或更少,只有一组会亮。如果我把引线换到引脚上,问题就会转到另一组灯上。

leds是这样的:

代码语言:javascript
复制
GPIO pin 6 --------.-LED+.---.-LED+.---.-LED+.---.-LED+.---|
GPIO pin 7 ---.+LED-.---.+LED-.---.+LED-.---.+LED-.--------|
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-08 03:14:31

将LED的连接改为两种支持PWM的引脚。

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

在大多数Arduino板(带有ATmega168或ATmega328P的板)上,这个函数工作在引脚3、5、6、9、10和11上。在Arduino Mega上,它工作在引脚2-13和44-46上。带有ATmega8的旧Arduino板只支持引脚9、10和11上的analogWrite()。

另一个因素是,analogWrite(255)analogWrite(0)将恢复以数字输出的形式驱动输出。所以写255会导致两个引脚输出(一个是数字输出,另一个是PWM模式)。但是写1到127只会导致PWM能力的引脚改变。

票数 2
EN

Stack Overflow用户

发布于 2019-02-08 02:15:09

来自arduino的手册:

语法analogWrite(引脚,值)

参数引脚:要写入的引脚。允许的数据类型: int。值:工作周期:0(始终关闭)到255 (始终打开)之间。允许的数据类型: int

使用值为1的analogWrite本质上是接近零的.255是全电压。您试图像使用analogWrite()一样使用digitalWrite()。

考虑在代码中使用数字写入:https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/

至于你的LED的行为,似乎你的电路也需要调试:你的电路只允许电流流动时,引脚7是开着。二极管(发光二极管)只允许一个方向的电流。如果你打算有LED的替代,他们都应该是定向的积极指向他们的GPIO引脚和他们见面的地方,他们应该被一个拉下电阻接地。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54585098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档