Lewati ke isi
Arduino Compilation Error

Arduino Compilation Error

Mencari kesalahan yang terjadi pada Arduino memang merupakan hal yang sangat menguras waktu dan pikiran, terkadang kita dibuat bingung dengan kesalahan tersebut. Entah itu kesalahan penulisan kode ataupun kesalahan komunikasi data. Walaupun perangkat lunak Arduino menyertakan konsol pesan (text message console) namun tetap saja kesalahan tersebut terkadang sulit untuk ditemukan. Untuk memudahkan dalam mencari dan menemukan kesalahan, artikel kali ini akan membahas cara menyederhanakan kesalahan-kesalahan yang terjadi pada Arduino IDE agar lebih mudah dalam menemukan dan menyelesaikan permasalahan pada kode-kode Arduino.

Sedangkan jika kode (skets) benar, maka pada saat melakukan Verify atau Upload maka kotak pesan akan menampilkan informasi seperti dibawah ini:

Sketch uses 924 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

Kesalahan Kompilasi

Kesalaham Kompilasi atau Compile Error adalah kesalahan yang terjadi ketika kita mencoba melakukan kompilasi (compile atau verify) kode dan perangkat lunak Arduino (compiler) menemukan kesalahan diantara kode-kode yang telah ditulis. Pesan kesalahan akan muncul pada area "Text Message Console" saat kita mencoba melakukan compile/verify dan atau mengunggah (upload) kode ke papan Arduino. Dan saat pesan kesalahan itu muncul maka dapat dipastikan telah terjadi compile error (kesalahan kompilasi) dan atau upload error (kesalahan unggah). Jadi secara garis besar pesan kesalahan itu terbagi menjadi dua yaitu; kesalahan kompilasi (compile error) dan kesalahan unggah (upload error). Compile error biasanya terjadi karena kesalahan penulisan kode (termasuk kesalahan pemuatan perpustakaan atau library). Sedangkan upload error biasanya terjadi karena kesalahan komunikasi perangkat keras.


Gejala Kesalahan

Jika kita yakin bahwa telah terjadi kesalahan kompilasi atau kesalahan unggah, maka perhatikanlah pada bagian text message console (area latar berwarna hitam) yang terdapat di bagian paling bawah pada perangkat lunak Arduino.

Jendela Perangkat Lunak Arduino

Untuk membedakan kesalahan antara compile error (kesalahan kompilasi) dengan upload error (kesalahan unggah) maka secara umum dapat dibedakan dengan memperhatikan pesan kesalahan yang muncul pada text message console seperti contoh dibawah ini.

Compile Error (Kesalahan Kompilasi)

A function-definition is not allowed here before ‘{’ token

Blink.ino: In function ‘void setup()’:
Blink:19: a function-definition is not allowed here before ‘{’ token
Blink:24: error: expected ‘}’ at end of input

Pesan kesalahan kompilasi biasanya ditandai dengan kemuncul informasi pada area kotak berwarna oranye dan diikuti informasi kode berakhiran .ino dibawahnya (area latar hitam) pada konsol pesan. Kesalahan kompilasi terjadi karena terdapat kesalahan pada penulisan kode.

Upload Error (Kesalahan Unggah)

serial port ‘/dev/tty.bluetooth-modem’ already in use.

Binary sketch size: 4,962 bytes (of a 30,720 byte maximum)
processing.app.SerialException: Serial port ‘/dev/tty.Bluetooth-Modem’ already in use.
try quiting any programs that may at processing.app.Serial.(Serial.java:171)
at processing.app.Serial.(Serial.java:77)

Kesalahan unggah hampir mirip dengan kesalahan kompilasi. Pada area kotak berwarna oranye akan muncul informasi kesalahan dan diikuti dibawahnya informasi kesalahan yang biasanya diawali dengan kalimat Binary sketch size: 1,082 bytes (of a 30,720 byte maximum). Kesalahan unggah terjadi karena terdapat kesalahan komunikasi pada perangkat keras.

Kesalahan-kesalahan yang terjadi sebenarnya akan disampaikan pada text message console secara berurutan. Kesalahan penulisan kode akan ditampilkan lebih dulu sebelum proses unggah (upload) dimulai. Dan jika penulisan kode sudah benar maka pesan kesalahan unggah yang kemudian akan ditampilkan. Ini berarti pesan kesalahan unggah tidak akan ditampilkan sampai semua kode yang ditulis diperbaiki. Kesalahan unggah tidak akan muncul jika komunikasi perangkat keras terhubung dengan benar, baik antara komputer dengan papan Arduino atau perangkat keras (sensor, module, shield) dengan papan Arduino.


Menemukan Kesalahan Kompilasi

Kesalahan kompilasi (compile error) biasanya terjadi karena beberapa hal, diantaranya; hilangnya kode (biasanya karena lupa tidak ditulis), kesalahan kode (terutama pada tanda baca), kesalahan ejaan, dan kesalahan kapitalisasi (penulisan huruf besar kecil) hal ini karena kode Arduino bersifat Case Sensitive. Kesalahan kompilasi juga dapat disebabkan oleh variabel yang belum diinisialisasi (dideklarasikan) dibagian awal program dan atau teks tambahan dimanapun dalam kode program yang ditulis. Jika menemukan kesalahan kompilasi maka bacalah pesan dengan hati-hati pada area text message console perangkat lunak Arduino sebagai petunjuk. Selidiki kode disekitar lokasi yang disoroti (highlight) atau area yang dilompatkan (jump) oleh Arduino. Jika sulit atau tidak ditemukan kesalahan pada area tersebut maka perhatikan kesuruhan kode baris demi baris dari atas ke bawah, dengan tetap mengacu pada kesalahan yang ditampilkan. Huuuh! :(


Memahami Contoh Kesalahan dan Solusinya

Setiap bagian dimulai dari penggalan kode yang bermasalah. Dibawah ini contoh-contoh kesalahan yang mungkin saja masalah yang pernah, sedang atau akan kita temui. Potongan kode yang bermasalah tersebut dilanjutkan dengan contoh pesan kesalahan yang tampil. Pada bagian akhir dari setiap contoh diberikan solusi untuk menemukan kesalahan kode yang ditulis. Contoh-contoh kesalahan yang biasanya terjadi dikelompokan menjadi:

  1. Kesalahan Semicolon (Titik Koma)
  2. Kesalahan Kurung Kurawal (Curly Bracket)
  3. Kesalahan Kurung (Parentheses)
  4. Kesalahan Koma (Comma)
  5. Kesalahan Ejaan (Misspelling) atau Kesalahan Kapitalisasi (Mis-Capitalization)
  6. Kesalahan Inisialisasi Variabel (Variable Initialization)
  7. Teks Tambahan Acak dalam Program

[1] Kesalahan Semicolon atau ;

Pesan kesalahan untuk semicolon yang hilang relatif mudah. Pesan kesalahan yang tampil, baik didalam area oranye atau area text message console latar hitam, ada baris yang menampilkan error: expected ',' or ';' before 'void'. Pesan ini berindikasi bahwa telah terjadi kesalahan atau tidak dituliskannya simbol semicolon (;) atau titik koma. Arduino IDE biasanya akan langsung menyoroti (highlight) baris setelah titik koma yang hilang untuk menunjukan lokasi kesalahan kode yang telah ditulis. Ini berarti kita harus mencari kesalahan sebelum baris yang di-highlight. Kode yang di-highlight bukanlah kode yang terdapat kesalahannya, tapi kesalahan terletak pada baris kode sebelumnya.

Perhatikan contoh dibawah ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// Kode Dimulai
int led = 13

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW)
  delay(1000);
}

error: expected unqualified-id before numeric constant

Blink:2: error: expected unqualified-id before numeric constant
Blink:3: error: expected ',' or ';' before 'void'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// Kode Dimulai
int led = 13;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW)
  delay(1000);
}

expected ';' before 'delay'

Blink.ino: In function 'void loop()':
Blink:11: error: expected ';' before 'delay'

Solusi Kesalahan Semicolon atau ;

Perhatikan pesan error: expected ';' dari contoh kesalahan kode diatas. Carilah kesamaan antara kesalahan Anda dan salah satu kesalahan di atas. Tambahkan titik koma yang hilang dan Verify ulang kode. Jika titik koma yang hilang adalah satu-satunya kesalahan pada kode program, kode akan berhasil di kompilasi (verify). Jika memiliki kesalahan tambahan, Anda akan mendapatkan pesan error baru dengan informasi tentang kesalahan berikutnya dalam program. Perhatikan pesan kesalahan Blink:2, Blink:3 atau Blink:11 pada contoh kode diatas. Angka :2, angka :3 dan angka :11 menunjukan baris yang di-highlight yang mengalami kesalahan dan atau kesalahan terjadi sebelum baris tersebut.


[2] Kesalahan Curly Bracket atau

Curly Bracket atau sering dikenal kurung keriting (kurawal) atau dengan simbol '{}'. Kesalahan curly bracket biasanya merupakan pesan kesalahan yang terkadang membingungkan dan samar. Biasanya Arduino IDE akan menyampaikan kesalahan berupa tanda '{' atau '}' baik pada pesan kesalahan berlatar hitam atau para area oranye. Arduino IDE biasanya akan langsung memberikan highlight pada baris setelah kode kurung keriting hilang untuk menunjukan lokasi kesalahan. Namun, terkadang Arduino IDE memberikan highlight pada baris yang tidak ada hubungannya dengan kesalahan sama sekali.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// Kode Dimulai
int led = 13;

void setup() {
  pinMode(led, OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}

a function-definition is not allowed here before '{' token

Blink.ino: In function 'void setup()':
Blink:7: error: a function-definition is not allowed here before '{' token
Blink:12: error: expected '}' at end of input

Solusi Kesalahan Curly Bracket atau

Carilah tanda '{' atau '}' pada kesalahan kode Anda. Bandingkan kesalahan yang terjadi pada kode Anda dengan contoh kesalahan diatas. Tambahkan simbol Curly Bracket pada kode dan verfy ulang kode. Jika tidak memiliki kesalahan tambahan dalam kode, maka kompilasi atau verify akan berhasil. Jika tidak berhasil, Anda akan mendapatkan pesan error baru dengan informasi tentang kesalahan berikutnya pada program.


[3] Kesalahan Kurung atau ()

Pesan kesalahan ini sering membingungkan dan samar. Biasanya, tapi tidak selalu, kesalahan tanda '(' atau ')' akan di informasikan pada kotak pesan kesalahan baik para area oranye atau area hitam. Perangkat lunak Arduino biasanya akan menyoroti sesuai dengan tanda kurung yang hilang untuk menunjukkan lokasi kesalahan, tapi kadang-kadang akan menyoroti baris yang tidak terkait sama sekali.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int led = 13;

void setup( {
  pinMode(led, OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}

variable or field 'setup' declared void

Blink:3: error: variable or field 'setup' declared void
Blink:3: error: expected primary-expression before '{' token
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int led = 13;

void setup() {
  pinMode(led, OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000;
  digitalWrite(led, LOW);
  delay(1000);
}

expected ')' before ';' token

Blink.ino: In function 'void loop()':
Blink:9: error: expected ')' before ';' token

Solusi Kesalahan Kurung atau ()

Carilah tanda '(' atau ')' pada kesalahan kode Anda. Carilah kesamaan antara kesalahan kode yang Anda tulis dengan contoh-contoh di atas. Tambahkan tanda kurung yang hilang dan verify (compile) ulang kode. Jika Anda tidak memiliki kesalahan tambahan pada kode yang di tulis, kompilasi kode akan berhasil. Jika tidak, Anda akan mendapatkan pesan error atau informasi baru tentang kesalahan berikutnya pada program.


[4] Kesalahan Koma atau ','

Pesan kesalahan ini sering membingungkan dan samar. Arduino tidak selalu menyebutkan kesalahan koma pada kotak pesan kesalahan baik pada area oranye atau area hitam. Perangkat lunak Arduino biasanya akan menyoroti langsung pada baris dimana koma itu hilang untuk menunjukkan lokasi kesalahan pada kode yang Anda tulis.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int led = 13;

void setup() {
  pinMode(led OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000;
  digitalWrite(led, LOW);
  delay(1000);
}

expected ')' before numeric constant

Blink.ino: In function 'void setup()':
Blink:4: error: expected ')' before numeric constant
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Arduino.h:120: error: too few arguments to function 'void pinMode(uint8_t, uint8_t)'
Blink:4: error: at this point in file

Solusi Kesalahan Koma atau ','

Carilah kesamaan antara kesalahan pada kode Anda dengan contoh-contoh kode di atas. Tambahkan tanda koma yang hilang dan kompilasi ulang kode. Jika tidak memiliki kesalahan tambahan dalam kode Anda, kode akan berhasil di kompilasi. Jika tidak, anda akan mendapatkan pesan error atau informasi baru tentang kesalahan berikutnya pada program.


[5] Kesalahan Ejaan atau Kapitalisasi

Pesan kesalahan ejaan (misspelling) atau kesalahan kapitalisasi (mis-capitalization) biasanya merupakan pesan kesalahan paling jelas dan paling mudah untuk akan Anda hadapi. Pada umumnya kesalahan ini memiliki format atau pesan 'word with error' was not declared in this scope. Perangkat lunak Arduino akan selalu menyoroti (highlight) secara langsung pada baris yang terdapat kesalahan ejaan atau kesalahan kapitalisasi untuk menunjukkan lokasi kesalahan Anda. Juga, jika Anda memiliki kesalahan ejaan yang terintegrasi sebagai prosedur atau variabel Arduino, warna kata yang salah atau kesalahan kapitalisasi akan berubah warna dari warna oranye atau atau biru menjadi warna hitam, ini memberikan petunjuk yang sangat berharga tentang penyebab kesalahan.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int led = 13;

void setup() {
  pinMode(led OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000;
  digitalWrite(led, LOW);
  dellay(1000);
}

'dellay' was not declared in this scope

Blink.ino: In function 'void loop()':
Blink:11: error: 'dellay' was not declared in this scope
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int led = 13;

void setup() {
  pinMode(led OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000;
  digitalWrite(led, low);
  dellay(1000);
}

'low' was not declared in this scope

Blink.ino: In function 'void loop()':
Blink:10: error: 'low' was not declared in this scope

Solusi Kesalahan Ejaan atau Kapitalisasi

Carilah kesalahan dengan format 'word with error' was not declared in this scope. Perbaiki kesalahan ejaan atau kesalahan kapitalisasi dan kompilasi ulang kode Anda. Jika tidak memiliki kesalahan tambahan dalam kode Anda, kode akan berhasil di kompilasi. Jika tidak, anda akan mendapatkan pesan error atau informasi baru tentang kesalahan berikutnya pada program.


[6] Kesalahan Definisi Variabel

Kesalahan untuk definisi variabel (variable definitions) cukup jelas. Biasanya menampilkan pesan kesalahan dengan format 'missing variable' was not declared in this scope. Perangkat lunak Arduino akan menyoroti baris yang terdapat kesalahan variabel didalamnya dan atau ditemukan variabel yang hilang. Sebagai contoh, dalam kode di bawah ini, Arduino akan menyoroti baris pinMode(led, OUTPUT); ketika Anda mengkompilasi kode maka muncul pesan kesalahan karena baris pertama yang ditulis kehilangan variabel led.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// ini adalah pin untuk LED int led = 13;

void setup() {
  pinMode(led OUTPUT);


void loop() {
  digitalWrite(led, HIGH);
  delay(1000;
  digitalWrite(led, low);
  dellay(1000);
}

'led' was not declared in this scope

Blink.ino: In function 'void setup()':
Blink:4: error: 'led' was not declared in this scope
Blink.ino: In function 'void loop()':
Blink:8: error: 'led' was not declared in this scope

Solusi Kesalahan Definisi Variabel

Carilah kesalahan dengan format 'missing variable' was not declared in this scope. Periksalah dari hilangnya definisi variabel atau kesalahan ejaan definisi variabel pada bagian kode. Perbaiki atau tambahkan definisi yang diperlukan kemudian kompilasi ulang. Jika tidak memiliki kesalahan tambahan dalam kode Anda, kode akan berhasil di kompilasi. Jika tidak, Anda akan mendapatkan pesan error atau informasi baru tentang kesalahan berikutnya pada program.


[7] Teks Tambahan Acak dalam Program

Kesalahan pada teks tambahan acak didalam sekumpulan kode yang telah ditulis, biasanya lumayan membingungkan. Namun biasanya Arduino IDE akan menyoroti baris dimana terdapat kesalahan teks tambahan. Kesalahan teks ini pada umumnya disebabkan oleh penulisan tanda komentar yang hilang yaitu '/', '/' atau '/'. Beberapa contoh dibawah ini menunjukan kesalahan komentar yang tidak dimulai dengan karakter slash '/'. Jika melakukan kesalahan tulis komentar, warna huruf akan menjadi hitam dan bukan abu-abu, untuk memberikan petunjuk bahwa terjadi kesalahan.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// ini adalah pin untuk LED 
int led = 13;

void setup() {
  pinMode(led OUTPUT);


void loop() {
  digitalWrite(led, HIGH); x
  delay(1000;
  digitalWrite(led, low);
  dellay(1000);
}

'x' was not declared in this scope

Blink.ino: In function 'void loop()':
Blink:9: error: 'x' was not declared in this scope
Blink:10: error: expected `;' before 'delay'

Solusi Teks Tambahan Acak dalam Program

Carilah kesalahan teks tambahan pada baris yang disoroti oleh Arduino atau huruf yang berubah warna menjadi hitam. Perbaiki atau tambahkan teks/tanda diperlukan kemudian kompilasi ulang. Jika tidak memiliki kesalahan tambahan dalam kode Anda, kode akan berhasil di kompilasi. Jika tidak, Anda akan mendapatkan pesan error atau informasi baru tentang kesalahan berikutnya pada program.


[8] Kesalahan Exit Status

Perhatikan bahwa kode harus mengandung fungsi setup() dan fungsi loop(). Jika fungsi ini hilang, atau jika namanya telah diubah, kompiler akan menampilkan kesalahan ini.

exit status

collect2: error: ld returned 1 exit status
exit status 1

Pembaharuan Terakhir: 1 Maret 2022 06:17:03