seagatecm 发表于 2016-12-11 13:16:46

不知道是不是arduino的bug

从两个ADC管脚读取电压。其中一个用DEFALIT的方式读取,另外一个用INTERNAL方式。类似这样的代码:

analogReference(INTERNAL);
v = analogRead(6);
Serial.println(v);

analogReference(DEFAULT);
analogRead(other);

INTERNAL方式读取的数据输出类似这样:
160
715
160
715
162
160
160
715

其中很多数据是不对的,比如160是不对的。但如果关掉后面的DEFAULT开关,数据就都正确了。
请问这是什么问题?在一个Arduino的程序中不能同时用两种ADC方式读取吗?

275891381 发表于 2016-12-12 08:16:09

你还是看看analogReference这个函数吧DEFAULT INTERNAL的参考电压都不一样 160/1.1*5=727

单片机菜鸟 发表于 2016-12-12 08:57:50

路过感觉当你怀疑的时候 真的应该去看看函数定义

单片机菜鸟 发表于 2016-12-12 08:58:06

路过感觉当你怀疑的时候 真的应该去看看函数定义

seagatecm 发表于 2016-12-14 23:24:36

本帖最后由 seagatecm 于 2016-12-14 23:27 编辑

也许我没说清楚吧。
我是两个ADC读取,一个用DEFAULT,一个用INTERNAL。
DEFAULT方式读取的数据完全正常,而INTERNAL读出的数据有错有对。
我看过analogReference的函数定义,我就是要使用他不同的参考电压读数,所以专门这么使用的。

INTERNAL和DEFAULT在使用中是可以切换的对吧,所以我才奇怪用内部参考电压的这个脚,为什么会读出一些不正确的数据。

不过文档里面这么写
Alternatively, you can connect the external reference voltage to the AREF pin through a 5K resistor, allowing you to switch between external and internal reference voltages.

我用的MINIPRO,AREF上面连的是个0.1uf的电容,是必须要用电阻,才能切换吗?
页: [1]
查看完整版本: 不知道是不是arduino的bug