说明
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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。