Kode Arduino tidak dapat dikompilasi setelah disimpan

Setiap kali saya menjalankan kode di bawah ini tanpa menyimpan, kode itu akan dikompilasi. Ketika saya menyimpannya, saya mendapatkan kesalahan:

C:\Program Files (x86)\Arduino\arduino-1.0.4\hardware\arduino\cores\arduino/main.cpp:11: referensi tidak terdefinisi ke `setup'

C:\Program Files (x86)\Arduino\arduino-1.0.4\hardware\arduino\cores\arduino/main.cpp:14: referensi tidak terdefinisi ke `loop'

Saya sudah mencoba menghapus folder Arduino saya di C:\Program Files (x86), mendownloadnya dan memperbarui driver.

Program lain tampaknya berjalan dengan baik. Bagaimana cara memperbaikinya dan apa yang salah?

#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 sumber
comment
Saya berasumsi Anda telah memilih papan, programmer, dll yang tepat? Tampaknya sulit, tetapi kompiler Arduino dapat memberikan pesan yang funky...   -  person Eric Fossum    schedule 17.04.2013
comment
Ya, saya sudah memastikan semuanya benar. Saya bahkan menghapus driver dan menginstalnya kembali. Saya berasumsi tidak ada yang salah dengan kodenya?   -  person Aaron    schedule 17.04.2013
comment
Apakah Anda memberi nama yang aneh untuk file tersebut atau semacamnya? Karena sepertinya itu tidak tertaut ke file Anda. Atau, menurut saya, saat melakukan tautan, ia tidak menemukan fungsi setup() dan loop() yang tampaknya didefinisikan dengan jelas di file Anda.   -  person bobwki    schedule 17.04.2013
comment
@Aaron - Saya belum melihat apa pun. Anda bilang kesalahannya ada di 11 dan 14. Baris manakah itu?   -  person Eric Fossum    schedule 17.04.2013
comment
Juga, bagaimana jika Anda memuat sesuatu yang berfungsi (seperti berkedip) dan menambahkan kode ini ke dalamnya?   -  person Eric Fossum    schedule 17.04.2013
comment
@semua orang Untuk beberapa alasan ini berfungsi ketika saya menyimpannya dengan nama baru   -  person Aaron    schedule 17.04.2013


Jawaban (6)


IDE mengharapkan untuk menemukan file dalam folder dengan nama yang sama. Lihatlah struktur file dan folder yang berfungsi sebagaimana mestinya. Setelah namanya cocok, masalahnya akan hilang. Jika tidak demikian, alihkan IDE ke "verbose" untuk kompilasi. Ini kemudian memungkinkan Anda menemukan folder sementara tempat kode sumber C sebenarnya diproses. Anda kemudian dapat melihat program yang benar-benar dikompilasi dan ditautkan. Hal ini sangat membantu dalam menemukan permasalahan sebenarnya.

Anda mungkin juga ingin melihat detail proses pembuatan Arduino saat menganalisis keluaran compiler verbose .

person Udo Klein    schedule 17.04.2013

Arduino memiliki persyaratan yang sangat spesifik untuk nama sketsa yang Anda buat. Jika Anda menyimpannya sebagai "Utama" atau "utama", Anda perlu menyimpannya dengan nama lain di tempat lain.

person Aaron    schedule 21.01.2014
comment
+1 untuk ini, dalam proyek saya yang memberi nama file inti .ino dengan fungsi setup & loop di dalamnya dan folder terlampirnya main menyebabkan masalah ini bagi saya. Perhatikan bahwa ini hanya terjadi ketika membangun di Mac saya (OSX 10.10.5) yang dibangun di Windows 8.1 dengan folder dan file .ino terlampir bernama main tanpa masalah - person The_Neo; 24.12.2015

Saya menemukan masalahnya : Nama file INO tidak boleh sama dengan nama kelas.

Saya punya tiga file: DB1280.ino DB1280.cpp DB1280.h Kesalahan kompilasi muncul. Jadi saya mengganti nama DB1280.ino. Seperti SimpleDB1280.ino. Kesalahannya hilang.

person SimpleTeam    schedule 06.03.2014
comment
Tepatnya, jika saya memahaminya dengan benar, file .ino harus memiliki nama yang sama dengan folder yang memuatnya, dan akhirnya file perpustakaan lainnya (.h, .cpp) TIDAK BISA memiliki nama yang sama (terlepas dari ekstensi yang berbeda) - person swK; 30.10.2015

Masalah yang sama disini. Memperbaikinya dengan menghapus karakter spasi pada nama proyek.

person Rene Munsch    schedule 19.04.2015
comment
Harap berikan detail lebih lanjut tentang karakter khusus mana yang dihapus dan perbaikannya. Jawaban ini terlalu singkat dan sepertinya tidak akan berguna bagi orang lain. - person Cliff Ribaudo; 19.04.2015

Sederhanakan nama proyek

Saya telah mengubah nama proyek saya menggunakan Simpan sebagai menjadi my-project. Itu menyebabkan kesalahan yang Anda posting.

Untuk mengatasinya, sederhanakan nama proyek, kecualikan karakter khusus seperti - dari nama proyek.

person Jossef Harush    schedule 25.10.2015

Anda hanya harus membatalkan pilihan dalam preferensi untuk editor eksternal. Penjelasan :Saat memilih halaman Anda, Arduino berwarna abu-abu dan Anda dapat menulis program. Jadi ketika Anda ingin mentransfer dari ardublock ke arduino kode Anda tidak diterima dan itu normal karena ardublock bukan editor eksternal untuk arduino. Batalkan pilihan, halaman Arduino Anda mulai berwarna putih dan Anda dapat menulis kode dan mentransfer kode dari ardublock. Saya memiliki masalah yang sama, saya menggunakannya dan dijalankan..Selamat bersenang-senang :)

person user2549522    schedule 04.07.2013