用户工具

站点工具


reference:language:analogreadresolution

描述

analogReadResolution()是用在Due 和 Zero上的Analog API的扩展.

设置analogRead()返回值的大小(位),默认是十位(返回值介于0到1023)向后兼容AVR板.

DUE和ZERO可以通过改变分辨率到12来使用12位的adc. 这样将会从analogRead()返回0-4096的值.

语法

analogReadResolution(bits)

参数

bits:决定 analogRead()返回值的的分辨率(以位),你可以设置它为1到32之间,你可以设置高于12的分辨率,但是analogRead()的返回值将会是个近似值。细节请查看注意事项。

返回

无.

注意

如果你设置的analogReadResolution()值高于板子的容量,则将会返回最高精度值,并且后几位以0填充。

例如:在DUE和ZERO上使用analogReadResolution(16),你将会得到一个近似的16位的数字,其中前12位包含了真实的adc值,后四位以0填充。

如果你设置的analogReadResolution()值低于板子的容量,adc读取的有效数据的后几位将会被抛弃。

使用16位精度(或者任何高于实际硬件容量),以后你写的程序可以在更好的板子上自动处理更高精度的adc分辨率的设备,而不用改变原有代码。

例子

void setup() {
  // 打开串口
  Serial.begin(9600); 
}
 
void loop() {
  // 以默认十位精度读取A0口输入
  // 发送到串口 
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));
 
  // 改变分辨率为12位,读取A0口 
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));
 
  // 改变分辨率为16位,读取A0
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));
 
  // 改变8位分辨率,读取A0口
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));
 
  // delay 避免独占串口 
  delay(100);
}
reference/language/analogreadresolution.txt · 最后更改: 2017/04/07 10:03 (外部编辑)