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.