在ADK2012中使用非5v模拟参考电压

时间:2012-08-26 19:12:06

标签: arduino adk atmega

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

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

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 个答案:

答案 0 :(得分:0)

似乎analogRefence()期望像enum这样的东西作为参数

并且arduino.h中的定义是一个int

你有最新的arduino ide(rev 1.0.1)

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

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

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

analogReference(0); //EXTERNAL
analogReference(1); //DEFAULT
analogReference(2); //INTERNAL1V1
analogReference(3); //INTERNAL2V56

答案 1 :(得分:0)

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

这些设备本身以3.3伏电压运行,因此analogReference功能未启用。

  

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

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

答案 2 :(得分:0)

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

typedef enum _eAnalogReference
{
    AR_DEFAULT,
} eAnalogReference ;

不允许外部。

答案 3 :(得分:0)

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