Wajibnya fungsi loop()

Saat anda menjalankan kode ini

#include <WiFi.h> // Library wajib untuk ESP32

const char* ssid = "NAMASSIDWIFI";
const char* password = "passwordwifi";

void setup() {
  Serial.begin(115200);
  
  WiFi.begin(ssid, password);

  Serial.print("Menghubungkan");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nTerhubung!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

Muncul error

/home/rezaervani/.arduino15/packages/esp32/tools/esp-x32/2507/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: /home/rezaervani/.cache/arduino/cores/6983e18bc459fb7385d8bc1e48a75223/core.a(main.cpp.o):(.literal._Z8loopTaskPv+0x10): undefined reference to `_Z4loopv'
/home/rezaervani/.arduino15/packages/esp32/tools/esp-x32/2507/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: /home/rezaervani/.cache/arduino/cores/6983e18bc459fb7385d8bc1e48a75223/core.a(main.cpp.o): in function `_Z8loopTaskPv':
/home/rezaervani/.arduino15/packages/esp32/hardware/esp32/3.3.3/cores/esp32/main.cpp:79:(.text._Z8loopTaskPv+0x47): undefined reference to `_Z4loopv'
collect2: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1

Error ini muncul karena dalam pemrograman Arduino/ESP32, fungsi loop() wajib ada, meskipun Anda tidak memasukkan perintah apa pun di dalamnya.

Pesan undefined reference to _Z4loopv adalah bahasa teknis compiler yang artinya: “Saya mencari fungsi bernama loop, tapi tidak menemukannya.”

Solusi

Cukup tambahkan blok void loop() {} di bagian bawah kode Anda. Berikut adalah kode lengkap yang sudah diperbaiki (termasuk library WiFi yang tadi sempat tertinggal)

#include <WiFi.h>

const char* ssid = "NAMASSIDWIFI";
const char* password = "passwordwifi";

void setup() {
  Serial.begin(115200);
  
  WiFi.begin(ssid, password);

  Serial.print("Menghubungkan");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nTerhubung!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

// Tambahkan ini agar tidak error saat di-compile
void loop() {
  // Kosongkan saja jika tidak ada perintah yang dijalankan berulang
}

Mengapa ini terjadi?

Struktur dasar sketch Arduino selalu terdiri dari dua bagian utama:

  1. setup(): Berjalan satu kali saat ESP32 pertama kali menyala.
  2. loop(): Berjalan terus-menerus (berulang) selama ESP32 menyala.

Jika salah satu tidak ada, proses linking (penyambungan kode) akan gagal dan memunculkan error exit status 1.

Apakah kode ini sudah berhasil di-upload ke ESP32 Anda? Jika sudah, Anda bisa mengecek hasilnya di Serial Monitor (pastikan kecepatannya disetel ke 115200 baud).