保存后,Arduino代码将无法编译

时间:2013-04-16 17:39:37

标签: c compilation arduino

每次运行下面的代码而不保存时,它都会编译。当我保存它时,我得到错误:

  

C:\ Program Files(x86)\ Arduino \ arduino-1.0.4 \ hardware \ arduino \ cores \ arduino / main.cpp:11:未定义引用`setup'

     

C:\ Program Files(x86)\ Arduino \ arduino-1.0.4 \ hardware \ arduino \ cores \ arduino / main.cpp:14:对'loop'的未定义引用

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

其他程序似乎运行良好。我怎样才能解决它?什么是错的?

#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);
}

6 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

arduino对您构建的草图的名称有非常具体的要求。如果您将其保存为“Main”或“main”,则需要将其保存在其他位置的其他名称下。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

这里的问题相同。通过删除项目名称中的特殊字符来修复它。

答案 4 :(得分:0)

简化项目名称

我已使用另存为更改了我的项目名称my-project。这导致了您发布的错误。

要解决此问题,简化项目名称从项目名称中排除-等特殊字符。

答案 5 :(得分:-1)

您必须只选择外部编辑器的首选项。 解释:当它选择你的页面时,arduino是灰色的,你可以编写程序。 因此,当您想从ardublock转换为arduino时,您的代码不被接受,这是正常的,因为ardublock不是arduino的外部编辑器。 取消选择,您的arduino页面开始为白色,您可以编写代码并从ardublock转移代码。我有同样的问题,我使用它,它运行..有趣:))