โค้ด Arduino จะไม่คอมไพล์หลังจากบันทึก

ทุกครั้งที่ฉันรันโค้ดด้านล่างโดยไม่บันทึก มันจะทำการคอมไพล์ เมื่อฉันบันทึก ฉันได้รับข้อผิดพลาด:

C:\Program Files (x86)\Arduino\arduino-1.0.4\hardware\arduino\cores\arduino/main.cpp:11: ไม่ได้กำหนดการอ้างอิงถึง `การตั้งค่า'

C:\Program Files (x86)\Arduino\arduino-1.0.4\hardware\arduino\cores\arduino/main.cpp:14: การอ้างอิงที่ไม่ได้กำหนดถึง `loop'

ฉันได้ลองลบโฟลเดอร์ 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);
}

person Aaron    schedule 16.04.2013    source แหล่งที่มา
comment
ฉันคิดว่าคุณได้เลือกบอร์ด โปรแกรมเมอร์ ฯลฯ ที่ถูกต้องแล้ว? ดูเหมือนว่าจะใช้เวลานาน แต่คอมไพเลอร์ Arduino สามารถให้ข้อความที่เก๋ไก๋ได้...   -  person Eric Fossum    schedule 17.04.2013
comment
ใช่ ฉันทำให้แน่ใจว่าทุกอย่างอื่นถูกต้องแล้ว ฉันยังลบไดรเวอร์และติดตั้งใหม่อีกด้วย ฉันคิดว่าไม่มีอะไรผิดปกติกับรหัสใช่ไหม?   -  person Aaron    schedule 17.04.2013
comment
คุณมีชื่อไฟล์แปลกๆ หรือเปล่า? เพราะดูเหมือนว่ามันไม่ได้ลิงก์ไปยังไฟล์ของคุณ หรือฉันควรจะบอกว่าเมื่อมันทำลิงค์ มันไม่พบฟังก์ชัน setup() และ loop() ที่กำหนดไว้อย่างชัดเจนในไฟล์ของคุณ   -  person bobwki    schedule 17.04.2013
comment
@Aaron - ฉันยังไม่เห็นอะไรเลย คุณบอกว่าข้อผิดพลาดอยู่ที่ 11 และ 14 บรรทัดใดบ้าง   -  person Eric Fossum    schedule 17.04.2013
comment
นอกจากนี้ จะเกิดอะไรขึ้นถ้าคุณโหลดสิ่งที่ใช้งานได้ (เช่น กะพริบตา) และเพิ่มโค้ดนี้เข้าไป   -  person Eric Fossum    schedule 17.04.2013
comment
@ ทุกคน ด้วยเหตุผลบางอย่างมันใช้งานได้เมื่อฉันบันทึกด้วยชื่อใหม่   -  person Aaron    schedule 17.04.2013


คำตอบ (6)


IDE คาดว่าจะค้นหาไฟล์ในโฟลเดอร์ที่มีชื่อเดียวกัน ดูโครงสร้างของไฟล์และโฟลเดอร์ที่ทำงานเท่าที่ควร เมื่อชื่อตรงกัน ปัญหาก็จะหายไป หากไม่เป็นเช่นนั้น ให้เปลี่ยน IDE เป็น "verbose" เพื่อคอมไพล์ ซึ่งจะช่วยให้คุณสามารถค้นหาโฟลเดอร์ชั่วคราวที่ประมวลผลซอร์สโค้ด C จริงได้ จากนั้นคุณสามารถดูโปรแกรมที่ได้รับการคอมไพล์และเชื่อมโยงได้จริง วิธีนี้ช่วยค้นหาปัญหาที่แท้จริงได้อย่างมาก

คุณอาจต้องการดูรายละเอียดของกระบวนการสร้าง Arduino ในขณะที่คุณวิเคราะห์เอาต์พุตของคอมไพเลอร์แบบละเอียด .

person Udo Klein    schedule 17.04.2013

Arduino มีข้อกำหนดเฉพาะสำหรับชื่อของภาพร่างที่คุณสร้าง หากคุณบันทึกสิ่งนี้เป็น "หลัก" หรือ "หลัก" คุณจะต้องบันทึกไว้ในชื่ออื่นที่อื่น

person Aaron    schedule 21.01.2014
comment
+1 สำหรับสิ่งนี้ ในโครงการของฉันที่ตั้งชื่อไฟล์ core .ino โดยมีฟังก์ชั่นการตั้งค่า & วนซ้ำอยู่ข้างในและโฟลเดอร์ที่ปิดล้อม main ทำให้เกิดปัญหานี้สำหรับฉัน โปรดทราบว่าสิ่งนี้เกิดขึ้นเมื่อสร้างบน Mac ของฉัน (OSX 10.10.5) ที่สร้างขึ้นบน Windows 8.1 โดยมีโฟลเดอร์และไฟล์ .ino ล้อมรอบเรียกว่า main โดยไม่มีปัญหา - person The_Neo; 24.12.2015

ฉันพบปัญหาแล้ว: ชื่อไฟล์ INO จะต้องไม่เหมือนกันกับชื่อคลาส

ฉันมีสามไฟล์: DB1280.ino DB1280.cpp DB1280.h เกิดข้อผิดพลาดในการคอมไพล์ ดังนั้นฉันจึงเปลี่ยนชื่อ DB1280.ino เช่น SimpleDB1280.ino. ข้อผิดพลาดก็หายไป

person SimpleTeam    schedule 06.03.2014
comment
หากฉันเข้าใจถูกต้อง ไฟล์ .ino จะต้องมีชื่อเดียวกันกับโฟลเดอร์ที่มีไฟล์นั้น และในที่สุดไฟล์ไลบรารีอื่นๆ (.h, .cpp) ก็ไม่สามารถมีชื่อเดียวกันได้ (โดยไม่คำนึงถึงนามสกุลที่แตกต่างกัน) - person swK; 30.10.2015

ปัญหาเดียวกันที่นี่ แก้ไขโดยการลบอักขระพิเศษในชื่อโครงการ

person Rene Munsch    schedule 19.04.2015
comment
โปรดระบุรายละเอียดเพิ่มเติมเกี่ยวกับอักขระพิเศษที่ถูกลบออกซึ่งแก้ไขแล้ว คำตอบนี้สั้นเกินไปและไม่น่าจะเป็นประโยชน์กับผู้อื่นมากนัก - person Cliff Ribaudo; 19.04.2015

ลดความซับซ้อนของชื่อโครงการ

ฉันได้เปลี่ยนชื่อโครงการโดยใช้ บันทึกเป็น เป็น my-project นั่นทำให้เกิดข้อผิดพลาดที่คุณโพสต์

ในการแก้ปัญหานี้ ทำให้ชื่อโครงการง่ายขึ้น ยกเว้นอักขระพิเศษ เช่น - จากชื่อโครงการ

person Jossef Harush    schedule 25.10.2015

คุณต้องเลือกตัวเลือกที่ต้องการสำหรับโปรแกรมแก้ไขภายนอก คำอธิบาย: เมื่อเลือกเพจ Arduino ของคุณจะเป็นสีเทาและคุณสามารถเขียนโปรแกรมได้ ดังนั้นเมื่อคุณต้องการถ่ายโอนจาก ardublock ไปยัง Arduino รหัสของคุณจะไม่ได้รับการยอมรับและเป็นเรื่องปกติเนื่องจาก ardublock ไม่ใช่โปรแกรมแก้ไขภายนอกสำหรับ Arduino ยกเลิกการเลือก หน้า Arduino ของคุณเริ่มเป็นสีขาว และคุณสามารถเขียนโค้ดและโอนโค้ดจาก ardublock ได้ ฉันประสบปัญหาเดียวกัน ฉันใช้งานแล้วมันก็รัน..ขอให้สนุกนะ :)

person user2549522    schedule 04.07.2013