analogReadResolution()

描述

设定 analogRead() 所回传的数值大小 (以 bit 为单位),它预设为 10bits (回传值范围在 0 到 1023) 以相容于 AVR 系列的 Arduino 板。

而 86Duino 开发板的类比转数位硬体则拥有 11-bit 解析度,用此函式设定过后,就可以从 analogRead() 得到 0 到 2047 的 数值。

语法


analogReadResolution(bits)

参数

bits: 决定 analogRead() 函式回传的解析度 (以 bit 为单位),可以设定它的范围从 1 到 32;你可以把解析度设定的比 11 还高,但是 analogRead() 回传的数值会变为近似值,详细说明可以看下面的注解。

回传

无回传值

注解

如果你将 analogReadResolution() 的数值设定的比板子上类比转数位解析度还要高的时候,86Duino 只会回报最高的解析度,额外的位元皆是 0。

举个例子:在 86Duino 上呼叫 analogReadResolution(16) 会让你得到一个 16-bits 的数字,它是实际被读到的类比转数位讯号数值的前面 11bits 之近似值,而之后五位将会是 0。

反之,如果你将 analogReadResolution() 的数值设定的比板子上类比转数位解析度还要低的时候,从类比转数位得到之多余有效位元将会被舍去。

设定 16 位元解析度 (或者比硬体实际解析度更高的任意值) 让你可以在程式中自动去对应更高解析度的类比转数位硬体,当这些硬体规格在未来的板子被提高之后就不需要改写程式码了。

范例

void setup() {
  // 开启序列埠
  Serial.begin(9600); 
}

void loop() {
  // 从 A0 读入预设的解析度数值 (10bits)
  // 并且从序列埠输出
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // 改变读取的解析度为 12bits 并从 A0 读入
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // 改变读取的解析度为 16bits 并从 A0 读入
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // 改变读取的解析度为 8bits 并从 A0 读入
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // 些微的延迟让数值输出不会占满萤幕
  delay(100);
}

See also

类比输入脚的描述
analogRead()


语法参考主页面

本页由热血青年 LBU 译自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.