我有一个类似ADK2012 arduino的设备。我正在使用google的arduino软件副本,我可以毫无困难地编译和运行各种草图。
我有一个LM35,我已经连接到模拟输入。默认情况下,参考电压为5伏。这似乎工作正常,但我想使用不同的analogReference值,如下所述:
http://arduino.cc/en/Reference/AnalogReference
不幸的是,我遇到了一些麻烦。当我像这样使用DEFAULT
或EXTERNAL
时:
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)'
如果我尝试将其设置为INTERNAL
,INTERNAL1V1
或INTERNAL2V56
,我会收到如下错误:
AnalogReadSerial.cpp: In function 'void setup()':
AnalogReadSerial:12: error: 'INTERNAL' was not declared in this scope
我在这里有点死路一条。我对Arduino或Wiring不太熟悉,知道这是提供的设备配置的问题,还是物理硬件的实际限制,或内部的错误或不兼容。
不幸的是,我使用的硬件相对较少,而且似乎没有太多文档。我很欣赏有关从哪里开始寻找解决此问题的建议。
答案 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()函数。
答案 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欧姆电阻。