2013-04-16 90 views
3

每次我运行下面的代码而不保存时,它就会编译。当我确实保存它时,出现以下错误:保存后不会编译Arduino代码

C:\ Program Files(x86)\ Arduino \ arduino-1.0.4 \ hardware \ arduino \ cores \ arduino/main.cpp:11:undefined reference为'设置 '

C:\程序文件(x86)\的Arduino \ Arduino的1.0.4 \硬件\ Arduino的\芯\阿尔杜伊诺/ main.cpp中:14:未定义参考`循环'

我已经尝试删除我的Arduino文件夹C:\Program Files (x86),下载它并更新驱动程序。

其他程序似乎运行良好。我该如何解决它,有什么不对?

#define m_pin1 13 
#define m_pin2 12 
#define sensorPin 0 

int val1; 
int val2; 
int avg; 
int threshold; 
int flipTimer = 100; 

void setup(){ 
    pinMode(m_pin1, OUTPUT); 
    pinMode(m_pin2, OUTPUT); 
    pinMode(sensorPin, INPUT); 
    Serial.begin(9600); 
    Serial.println("Sensor 1 Average:"); 
} 

void loop(){ 
    moisture_val(); 
} 

int moisture_val(){ 
    setSensorPolarity(true); 
    delay(flipTimer); 
    int val1 = analogRead(sensorPin); 
    delay(flipTimer); 
    setSensorPolarity(false); 
    delay(flipTimer); 
    int avg = reportLevels(val1,val2); 
    int val2 = 1023 - analogRead(sensorPin); 
} 

void setSensorPolarity(boolean flip){ 
    if(flip){ 
     digitalWrite(m_pin1, HIGH); 
     digitalWrite(m_pin2, LOW); 
    } 
    else{ 
     digitalWrite(m_pin1, LOW); 
     digitalWrite(m_pin2, HIGH); 
    } 
} 

int reportLevels(int val1,int val2){ 
    int avg = (val1 + val2)/2; 
    return(avg); 
} 
+0

我假设你选择了正确的棋盘,程序员等?看起来像一个长镜头,但Arduino编译器可以给出时髦的消息... –

+0

是的,我确定一切都是正确的。我甚至删除了驱动程序并重新安装了它。我认为代码没有问题? – Aaron

+0

你对这个文件有些奇怪的名字吗?因为它看起来没有链接到你的文件。或者,我应该说,当它执行链接时,它找不到在文件中清晰定义的setup()和loop()函数。 – bobwki

回答

3

IDE希望在具有相同名称的文件夹中找到该文件。看看它们应该如何工作的文件和文件夹的结构。一旦名称匹配,问题就会消失。如果不是这样,请将IDE切换为“详细”进行编译。这将允许您找到处理实际C源代码的临时文件夹。然后,您可以查看实际编译和链接的程序。这在找出真正的问题方面有很长的路要走。

在分析详细编译器输出时,您可能还想查看Arduino build process的详细信息。

-1

您必须不选择外部编辑器。 说明:当它选择你的页面arduino是灰色的,你可以编写程序。 所以,当你想从ardublock转到arduino时,你的代码不被接受,这是正常的,因为ardublock不是arduino的外部编辑器。 取消选择,您的arduino页面开始变白,您可以从ardublock编写代码和传送代码。我有同样的问题,我使用它,它运行..有趣:)

2

arduino具有非常具体的要求,为您建立的草图的名称。如果您将其保存为“主”或“主”,则需要将其另存为其他名称。

+1

调用程序'new'也会触发此错误。 – hlovdal

+0

+1,在我的项目中,使用里面的setup&loop函数命名核心.ino文件,其内部的文件夹“main”引起了这个问题。请注意,这只发生在构建于Windows 8.1上的我的Mac(OSX 10.10.5)上,其中包含名为“main”的文件夹和.i​​no文件,没有问题 –

2

我发现问题: INO文件名不能与类名相同。

我有三个文件: DB1280.ino DB1280.cpp DB1280.h 编译错误出来了。 所以我改变了DB1280.ino的名字。如SimpleDB1280.ino。错误消失了。

+0

确切地说,如果我理解正确,那么.ino文件必须ahve与包含它的文件夹同名,最终其他库文件(.h,.cpp)不能具有相同的名称(不管扩展名是否相同) – swK

0

同样的问题在这里。通过删除项目名称中的空白字符来修复它。

+1

请提供有关哪个特殊字符已删除并修复的详细信息。这个答案太短,不太可能对其他人有帮助。 –

0

简化项目名称

我已经改变使用保存我的项目名称为my-project。这导致了你发布的错误。

为了解决这个问题,简化了项目名称,从项目名称中排除了特殊字符如-