说明
将模拟值 (PWM wave) 写入引脚。可用于以不同的亮度点亮 LED 或以不同的速度驱动电机。调用 analogWrite()
后,该引脚将生成指定占空比的稳定矩形波,直到在同一引脚上再次调用 analogWrite()
(或调用 digitalRead()
或 digitalWrite()
)。
木板 | PWM 引脚 | 脉宽调制频率 |
---|---|---|
Uno、纳米、迷你 |
3、5、6、9、10、11 |
490 赫兹(引脚 5 和 6:980 赫兹) |
Mega |
2 - 13, 44 - 46 |
490 赫兹(引脚 4 和 13:980 赫兹) |
莱昂纳多、微、云 |
3、5、6、9、10、11、13 |
490 赫兹(引脚 3 和 11:980 赫兹) |
Uno WiFi Rev2,Nano Every |
3、5、6、9、10 |
976赫兹 |
MKR 板 * |
0 - 8、10、A3、A4 |
732赫兹 |
MKR1000 WiFi * |
0 - 8、10、11、A3、A4 |
732赫兹 |
零 * |
3 - 13, A0, A1 |
732赫兹 |
纳米 33 IoT * |
2, 3, 5, 6, 9 - 12, A2, A3, A5 |
732赫兹 |
Nano 33 BLE/BLE 感应 |
1 - 13, A0 - A7 |
500赫兹 |
到期的 ** |
2-13 |
1000赫兹 |
101 |
3、5、6、9 |
针脚 3 和 9:490 Hz,针脚 5 和 6:980 Hz |
* 除了上述引脚上的 PWM 函数外,MKR、Nano 33 IoT 和 Zero 板在使用时具有真正的模拟输出analogWrite()
在DAC0
(A0
) 别针。
** 除了上述引脚上的 PWM 函数外,Due 在使用时具有真正的模拟输出analogWrite()
在别针上DAC0
和DAC1
.
你不需要调用pinMode()
在调用之前将引脚设置为输出analogWrite()
.
analogWrite
函数与模拟引脚或analogRead
函数。
用法
analogWrite(pin, value)
参数
pin
:要写入的 Arduino 引脚。允许的数据类型:int
.
value
:占空比:介于 0(始终关闭)和 255(始终开启)之间。允许的数据类型:int
.
返回
无
示例代码
将输出设置为与从电位计读取的值成比例的 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
}
注意事项和警告
引脚 5 和 6 上生成的 PWM 输出将具有 higher-than-expected 占空比。这是因为与 millis()
和 delay()
函数的交互,它们共享用于生成这些 PWM 输出的相同内部定时器。这将主要在低 duty-cycle 设置(例如 0 - 10)时注意到,并且可能导致值 0 未完全关闭引脚 5 和 6 上的输出。
相关用法
- Arduino analogWriteResolution()用法及代码示例
- Arduino analogRead()用法及代码示例
- Arduino analogReadResolution()用法及代码示例
- Arduino array用法及代码示例
- Arduino abs()用法及代码示例
- Arduino attachInterrupt()用法及代码示例
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- Arduino ~用法及代码示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代码示例
- Arduino const用法及代码示例
- Arduino Ethernet - server.begin()用法及代码示例
- Arduino ArduinoBLE - BLEService()用法及代码示例
- Arduino digitalWrite()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代码示例
- Arduino Servo - attach()用法及代码示例
- Arduino write()用法及代码示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代码示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代码示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代码示例
- Arduino WiFiNINA - WiFi.config()用法及代码示例
- Arduino MKRGSM - sms.read()用法及代码示例
- Arduino MKRNB - getCurrentCarrier()用法及代码示例
- Arduino Scheduler - Scheduler.startLoop()用法及代码示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 analogWrite()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。