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


Arduino analogReadResolution()用法及代码示例


[零,到期和MKR家族]

说明

analogReadResolution() 是用于 Zero、Due、MKR 系列、Nano 33(BLE 和 IoT)和 Portenta 的模拟 API 的扩展。

设置 analogRead() 返回的值的大小(以位为单位)。它默认为 10 位(返回 0-1023 之间的值)以向后兼容基于 AVR 的板。

Zero、Due、MKR 系列和 Nano 33(BLE 和 IoT)板具有 12 位 ADC 函数,可以通过将分辨率更改为 12 来访问。这将返回值analogRead()介于 0 和 4095 之间。
波特塔H7有一个 16 位 ADC,它允许 0 到 65535 之间的值。

用法

analogReadResolution(bits)

参数

bits :确定analogRead() 函数返回的值的分辨率(以位为单位)。您可以将其设置在 1 到 32 之间。您可以将分辨率设置为高于支持的 12 位或 16 位,但 analogRead() 返回的值将受到近似值。有关详细信息,请参阅下面的注释。

返回

示例代码

该代码显示了如何使用具有不同分辨率的 ADC。

void setup() {
  // open a serial connection
  Serial.begin(9600);
}

void loop() {
  // read the input on A0 at default resolution (10 bits)
  // and send it out the serial connection
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // change the resolution to 12 bits and read A0
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // change the resolution to 16 bits and read A0
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // change the resolution to 8 bits and read A0
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // a little delay to not hog Serial Monitor
  delay(100);
}

注意事项和警告

如果您将analogReadResolution() 值设置为高于您的板能力的值,Arduino 将仅以最高分辨率报告,用零填充额外的位。

例如:使用带有analogReadResolution(16) 的 Due 将为您提供一个近似的 16 位数字,其中前 12 位包含实际 ADC 读数,最后 4 位用零填充。

如果您将 analogReadResolution() 值设置为低于您的板能力的值,则从 ADC 读取的额外最低有效位将被丢弃。

使用 16 位分辨率(或任何高于实际硬件函数的分辨率)允许您编写草图,当这些设备在未来的板上可用时自动处理具有更高分辨率 ADC 的设备,而无需更改代码行。

相关用法


注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 analogReadResolution()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。