当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Arduino analogWriteResolution()用法及代码示例


[零,到期和MKR家族]

说明

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