AnalogWrite()

来自YFRobotwiki
跳转至: 导航搜索

描述

将一个模拟值(PWM波形)写入引脚。可用于以不同亮度点亮LED或以各种速度驱动电机。在调用analogWrite()之后,该引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()(或在同一引脚上调用digitalRead()或digitalWrite())。大多数引脚上PWM信号的频率约为490 Hz。在Uno和类似的板上,引脚5和6的频率约为980 Hz。莱昂纳多的引脚3和11也以980赫兹运行。

在大多数Arduino板卡(ATmega168或ATmega328)上,这个功能适用于针脚3,5,6,9,10和11.在Arduino Mega上,它可以在2 - 13和44 - 46的引脚上工作。带有ATmega8的电路板只支持9,10和11引脚上的analogWrite()。

Arduino Due支持在引脚2至13,加上引脚DAC0和DAC1上的analogWrite()。与PWM引脚不同,DAC0和DAC1是数模转换器,可作为真正的模拟输出。

在调用analogWrite()之前,您不需要调用pinMode()将引脚设置为输出。

analogWrite函数与模拟引脚或模拟指令功能无关。


语法

analogWrite(pin, value)


参数

pin: 要写的引脚。

value: 占空比:介于0(始终关闭)和255(始终为开)之间。


返回

None


注意: 引脚5和6上产生的PWM输出将具有高于预期的占空比。 这是因为与millis()和delay()函数的交互,它们共享用于生成这些PWM输出的相同内部定时器。 这将主要在低占空比设置(例如0 - 10)上注意到,并且可能导致值0不能完全关闭引脚5和6上的输出。


示例

将输出设置为与从电位器读取的值成比例的LED。

int ledPin = 9;      // LED connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value

void setup()
{
  pinMode(ledPin, OUTPUT);   // sets the pin as output
}

void loop()
{
  val = analogRead(analogPin);   // read the input pin
  analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}


扩展阅读

- analogRead()
- analogWriteResolution()
- PWM




返回Arduino语法参考列表

更多建议和问题欢迎反馈至 YFRobot论坛