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

时间:2019-02-08 02:00:49

标签: arduino

我有一组LED,每组LED都反向设置,所以当我以一种方式向电源1,3,5 ...供电时,会向相反方向供电。更改功率和2,4,6 ...我正在尝试使用数字引脚上的PWM设置亮度。这是我的代码:

<mat-form-field>
  <mat-select placeholder="Favorite food">
    <mat-option [value]="'a'">A</mat-option>
    <mat-option [value]="'b'">B</mat-option>
    <ng-container *ngTemplateOutlet="otherOptions"></ng-container>
  </mat-select>
</mat-form-field>


<ng-template #otherOptions>
    <mat-option [value]="'c'">Other</mat-option>
</ng-template>

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

指示灯如下:

'LaunchRequest': function () {
      this.emit(':ask', "Hi, Welcome to the my classes skill. What day would you like to know about?");
    },

2 个答案:

答案 0 :(得分:2)

将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功能的引脚发生变化。

答案 1 :(得分:1)

从arduino的联机帮助页中:

语法 AnalogWrite(pin,value)

参数 引脚:要写入的引脚。允许的数据类型:整数。 值:占空比:在0(始终关闭)和255(始终打开)之间。允许的数据类型:int

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

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

关于LED的行为,似乎还需要调试电路:仅当引脚7接通时,电路才允许电流流动。二极管(发光二极管)仅允许一个方向的电流。如果您打算让LED备用,则它们的所有正极都应指向其GPIO引脚,并且在它们相遇的地方应通过一个下拉电阻器接地。