說明
將模擬值 (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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。