0

我有一个 ADK2012 类似 arduino 的设备。我正在使用 google 的 arduino 软件副本,我可以毫无困难地编译和运行各种草图。

我有一个连接到模拟输入的 LM35。默认情况下,参考电压为 5 伏。这似乎工作正常,但我想使用不同的模拟参考值,如此处所述:

http://arduino.cc/en/Reference/AnalogReference

不幸的是,我遇到了一些麻烦。当我使用DEFAULTEXTERNAL喜欢这样:

analogReference(DEFAULT);

我编译时得到这个:

AnalogReadSerial.cpp: In function 'void setup()':
AnalogReadSerial:12: error: invalid conversion from 'int' to 'eAnalogReference'
AnalogReadSerial:12: error: initializing argument 1 of 'void analogReference(eAnalogReference)'

如果我尝试将其设置为INTERNALINTERNAL1V1INTERNAL2V56,我会收到如下错误:

AnalogReadSerial.cpp: In function 'void setup()':
AnalogReadSerial:12: error: 'INTERNAL' was not declared in this scope

我在这里有点死胡同。我对 Arduino 或 Wiring 不够熟悉,不知道这是否是所提供设备配置的问题,或者物理硬件的实际限制,或者内部的错误或不兼容。

不幸的是,我使用的硬件比较少见,而且似乎没有太多的文档。我很感激有关从哪里开始寻找解决此问题的建议。

4

4 回答 4

0

似乎analogRefence() 需要一个类似枚举的东西作为参数

arduino.h 中的定义是 int

你有最新的 arduino ide (rev 1.0.1)

我已经为 arduino 制作了一个工具链,并将其链接到另一个 ide(netbeans)
,因此调试 arduino 核心非常简单。

还没有找到错误,(它适用于最新的arduino ide);

无论如何,对于 arduino mega (ADK),您可以在新 ide 中执行此操作,
如果可行,那么您选择了错误的板(工具>>板>>arduino mega2560 或 mega ADK)

analogReference(0); //EXTERNAL
analogReference(1); //DEFAULT
analogReference(2); //INTERNAL1V1
analogReference(3); //INTERNAL2V56
于 2012-10-06T23:54:04.060 回答
0

事实证明(现在 arduino 文档已经赶上,5 个月后)答案是:

这些设备本机工作电压为 3.3 伏,因此analogReference未启用该功能。

Due 的模拟输入引脚从接地测量到最大值 3.3V。在 Due 的引脚上施加超过 3.3V 的电压会损坏 SAM3X 芯片。在 Due 上,analogReference() 函数被忽略。

http://arduino.cc/en/Main/ArduinoBoardDue

于 2013-02-03T04:22:37.397 回答
0

Arduino 2 不允许外部参考。您将在 SAM 库 (...sam\cores\arduino\wiring_analog.h ) 中找到它:

typedef enum _eAnalogReference
{
    AR_DEFAULT,
} eAnalogReference ;

并且不允许外部。

于 2013-08-27T14:28:03.737 回答
0

µC 始终使用外部参考,但硬件连接到 3.3V,如果您想使用 AREF,您可以更改板上的 0 欧姆电阻。

于 2014-01-11T21:54:34.377 回答