說明
analogWriteResolution()
是 Arduino Due 的模擬 API 的擴展。
analogWriteResolution()
設置analogWrite()
函數的分辨率。它默認為 8 位(值介於 0-255 之間),以向後兼容基於 AVR 的板。
Due具有以下硬件函數:
-
12 個默認為 8 位 PWM 的引腳,如基於 AVR 的板。這些可以更改為 12 位分辨率。
-
2 個帶 12 位 DAC 的引腳(Digital-to-Analog 轉換器)
通過將寫入分辨率設置為 12,您可以使用 0 到 4095 之間的值的 analogWrite()
來利用完整的 DAC 分辨率或設置 PWM 信號而不翻轉。
Zero 具有以下硬件函數:
-
10 個默認為 8 位 PWM 的引腳,如基於 AVR 的板。這些可以更改為 12 位分辨率。
-
1 個帶 10 位 DAC 的引腳(Digital-to-Analog 轉換器)。
通過將寫入分辨率設置為 10,您可以使用 0 到 1023 之間的值的 analogWrite()
來利用完整的 DAC 分辨率
MKR 係列板具有以下硬件函數:
-
4 個默認為 8 位 PWM 的引腳,如基於 AVR 的板。這些可以從 8(默認)更改為 12 位分辨率。
-
1 個帶 10 位 DAC 的引腳(Digital-to-Analog 轉換器)
通過將寫入分辨率設置為 12 位,您可以將 analogWrite()
的值用於 0 到 4095 之間的 PWM 信號;在 DAC 引腳上設置 10 位以利用 1024 值的完整 DAC 分辨率。
用法
analogWriteResolution(bits)
參數
bits
:確定analogWrite()
函數中使用的值的分辨率(以位為單位)。該值的範圍可以從 1 到 32。如果您選擇的分辨率高於或低於主板的硬件能力,則 analogWrite()
中使用的值如果太高將被截斷,如果太低則用零填充。有關詳細信息,請參閱下麵的注釋。
返回
無
示例代碼
解釋代碼
void setup() {
// open a serial connection
Serial.begin(9600);
// make our digital pin an output
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
// read the input on A0 and map it to a PWM pin
// with an attached LED
int sensorVal = analogRead(A0);
Serial.print("Analog Read) : ");
Serial.print(sensorVal);
// the default PWM resolution
analogWriteResolution(8);
analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
Serial.print(" , 8-bit PWM value : ");
Serial.print(map(sensorVal, 0, 1023, 0, 255));
// change the PWM resolution to 12 bits
// the full 12 bit resolution is only supported
// on the Due
analogWriteResolution(12);
analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
Serial.print(" , 12-bit PWM value : ");
Serial.print(map(sensorVal, 0, 1023, 0, 4095));
// change the PWM resolution to 4 bits
analogWriteResolution(4);
analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
Serial.print(", 4-bit PWM value : ");
Serial.println(map(sensorVal, 0, 1023, 0, 15));
delay(5);
}
注意事項和警告
如果您將analogWriteResolution()
值設置為高於您開發板能力的值,Arduino 將丟棄額外的位。例如:在 12 位 DAC 引腳上使用帶有 analogWriteResolution(16)
的 Due,隻有傳遞給 analogWrite()
的值的前 12 位將被使用,最後 4 位將被丟棄。
如果您將 analogWriteResolution()
值設置為低於您的板能力的值,則缺失的位將用零填充以填充硬件所需的大小。例如:在 12 位 DAC 引腳上使用帶analogWriteResolution(8) 的Due,Arduino 會將4 個零位添加到analogWrite()
中使用的8 位值以獲得所需的12 位。
相關用法
- Arduino analogWrite()用法及代碼示例
- 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大神的英文原創作品 analogWriteResolution()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。