用户工具

站点工具


reference:language:analogreadresolution

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
zh:reference:language:analogreadresolution [2016/01/06 07:49] – [参数] nzhureference:language:analogreadresolution [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== 描述 ======
 +analogReadResolution()是用在具有12bit ADC上的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分辨率的设备,而不用改变原有代码。
 +=====例子 =====
 +
 +<code cpp>
 +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);
 +}
 +</code>