这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版 | |||
zh:reference:language:analogwrite [2017/08/29 08:30] – [例子] 董凯萍 | reference:language:analogwrite [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== analogWrite() ====== | ||
+ | |||
+ | |||
+ | ===== 描述 ===== | ||
+ | |||
+ | 从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。 | ||
+ | |||
+ | 在大多数ocrobot控制板(ATmega168或ATmega328),只有引脚3,5,6,9,10和11可以实现该功能。在Mega2560上,引脚2到13可以实现该功能。在使用analogWrite()前,你不需要调用pinMode()来设置引脚为输出引脚。 | ||
+ | |||
+ | analogWrite函数与模拟引脚、analogRead函数没有直接关系。 | ||
+ | |||
+ | ===== 语法 ===== | ||
+ | |||
+ | analogWrite(pin, | ||
+ | |||
+ | ===== 参数 ===== | ||
+ | |||
+ | pin:用于输入数值的引脚。 | ||
+ | \\ value:占空比:0(完全关闭)到255(完全打开)之间。 | ||
+ | |||
+ | ===== 返回 ===== | ||
+ | |||
+ | 无 | ||
+ | |||
+ | ===== 说明和已知问题 ===== | ||
+ | |||
+ | 引脚5和6的PWM输出将高于预期的占空比(输出的数值偏高)。这是因为millis()和delay()功能,和PWM输出共享相同的内部定时器。这将导致大多时候处于低占空比状态(如:0 | ||
+ | |||
+ | ===== 例子 ===== | ||
+ | |||
+ | 通过读取电位器的阻值控制LED的亮度 | ||
+ | <code cpp> | ||
+ | int ledPin = 10; // LED连接到数字引脚9 | ||
+ | int analogPin = 0; // | ||
+ | int val = 0; // | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode (ledPin, | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | val = analogRead (analogPin); | ||
+ | analogWrite(ledPin, | ||
+ | } | ||
+ | </ | ||
+ | |||