analogWrite()

描述

对 pin 脚写入一个类比讯号数值 (pin 脚将输出 PWM 波型),可以用在改变 LED 的亮度以及控制马达的转速,在呼叫 analogWrite() 之后,pin 脚将会产生一个指定 duty 的 PWM 方波,直到下一次再呼叫 analogWrite() (或者在同一个 pin 脚上呼叫 digitalRead()/digitalWrite());在 86Duino 上 PWM 讯号的频率是 1000Hz。

在 86Duino ZERO 上,这个函式会作用在 pin 3、5、6、9、10、11、13;在 86Duino EduCake 上,这个函式会作用在 pin 3、5、6、9、10、11、13、21;在 86Duino ONE 上,这个函式会作用在 pin 3、5、6、9、10、11、13、29、30、31、32。在 86Duino PLC 上,这个函式会作用在 pin 1、3、4、7。

呼叫 analogWrite() 之前不需要去呼叫 pinMode() 来设定 pin 脚为输出。

analogWriteanalogRead 函式都不会对类比讯号输入做额外的动作。

语法


analogWrite(pin, value)

参数

pin: 输出 PWM 的 pin 脚
value: PWM 的 duty 值 预设值介于 0 (常闭状态) 到 255 (常开状态)

可以呼叫 analogWriteResolution() 去设定更高的 PWM 数值

回传

无回传值

范例

根据可变电阻读取到的数值,设定 LED 的亮度比例

int ledPin = 9;      // LED 灯连接到数位 pin 9
int analogPin = 3;   // 可变电阻连接到类比 pin 3
int val = 0;         // 储存读取到的电压数值

void setup()
{
  pinMode(ledPin, OUTPUT);   // 设定 pin 9 脚为输出
}

void loop()
{
  val = analogRead(analogPin);   // 读取类比输入 pin 脚
  analogWrite(ledPin, val / 4);  // analogRead 数值从 0 到 1023 
                                 // analogWrite 数值从 0 到 255
}

See also

analogRead()
analogWriteResolution()
Tutorial: PWM


语法参考主页面

本页由热血青年 LBU 译自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.