“AnalogWrite()”的版本间的差异
第62行: | 第62行: | ||
:- [[analogRead()]] | :- [[analogRead()]] | ||
:- [[analogWriteResolution()]] | :- [[analogWriteResolution()]] | ||
+ | :- [[PWM]] | ||
2017年9月13日 (三) 10:26的最后版本
描述
将一个模拟值(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 }
扩展阅读
更多建议和问题欢迎反馈至 YFRobot论坛