Program Pertama: Blink LED

Blink LED adalah "Hello World"-nya dunia embedded system. Pada tutorial ini, kita membuat LED berkedip setiap 1 detik menggunakan Arduino IDE — fondasi GPIO sebelum WiFi (#4) dan sensor DHT22 (#5).

Prasyarat: Sudah install Arduino IDE & board ESP32 (#2) dan paham dasar hardware dari Mengenal ESP32 (#1).

Apa itu GPIO?

GPIO (General Purpose Input/Output) adalah pin pada mikrokontroler yang bisa diprogram sebagai input atau output. ESP32 memiliki 34 pin GPIO yang masing-masing bisa digunakan untuk berbagai fungsi.

Built-in LED pada ESP32 DevKit biasanya terhubung ke pin GPIO 2. Namun ini bisa berbeda tergantung versi board yang kamu gunakan — cek silkscreen di PCB.

Wiring LED Eksternal (Opsional)

Untuk LED terpisah di breadboard, ikuti koneksi pin-ke-pin berikut. Built-in LED di GPIO 2 sering sudah ada di board — wiring ini berguna jika kamu pakai LED eksternal:

ESP32 DevKit built-in LED sering GPIO 2 GPIO 2 GND LED + anoda / − katoda 220 Ω anoda (+) katoda (−) kembali ke GND GPIO2 → LED (+) → resistor 220Ω → GND ESP32 · Hindari GPIO strapping boot (0, 12, 15)
Wiring LED eksternal: GPIO 2 → anoda LED → resistor 220Ω → GND. Built-in LED DevKit sering sudah di GPIO 2.

Kode Program Blink LED

Berikut kode lengkap untuk membuat LED berkedip di GPIO 2:

// Mendefinisikan pin LED
#define LED_PIN 2

void setup() {
  // Set pin LED sebagai OUTPUT
  pinMode(LED_PIN, OUTPUT);

  // Mulai Serial Monitor untuk debugging
  Serial.begin(115200);
  Serial.println("Program Blink LED ESP32 dimulai!");
}

void loop() {
  // Nyalakan LED
  digitalWrite(LED_PIN, HIGH);
  Serial.println("LED ON");
  delay(1000);  // Tunggu 1 detik

  // Matikan LED
  digitalWrite(LED_PIN, LOW);
  Serial.println("LED OFF");
  delay(1000);  // Tunggu 1 detik
}

Alur Eksekusi Program

Sketch Arduino ESP32 mengikuti pola setup() sekali, lalu loop() berulang:

setup() sekali saat boot pinMode OUTPUT Serial.begin masuk loop HIGH delay(1000) LOW delay(1000) ulang loop() selamanya setup() sekali → loop() HIGH → delay → LOW → delay → ulang
Alur: setup() sekali, lalu loop() HIGH → delay → LOW → delay berulang.

Penjelasan Kode

setup() Function

Fungsi setup() hanya dijalankan sekali saat ESP32 pertama kali dinyalakan atau direset. Di sini kita:

  • pinMode(LED_PIN, OUTPUT) — mengatur pin LED sebagai output
  • Serial.begin(115200) — menginisialisasi komunikasi serial dengan baud rate 115200

loop() Function

Fungsi loop() dijalankan berulang-ulang setelah setup() selesai. Di sini kita:

  • digitalWrite(LED_PIN, HIGH) — memberikan tegangan ke pin LED (LED menyala)
  • delay(1000) — menunggu 1000 milidetik (1 detik)
  • digitalWrite(LED_PIN, LOW) — mematikan tegangan di pin LED (LED padam)

Cara Upload Program

  1. Salin kode di atas ke Arduino IDE
  2. Pastikan board sudah dipilih: Tools → Board → ESP32 Arduino → ESP32 Dev Module
  3. Pilih port yang benar di Tools → Port
  4. Klik tombol Upload (panah ke kanan)
  5. Tunggu hingga muncul "Done uploading"

Modifikasi: Blink dengan Kecepatan Berbeda

Coba eksperimen dengan mengubah nilai delay untuk kecepatan kedip yang berbeda:

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(100);   // Cepat: 100ms

  digitalWrite(LED_PIN, LOW);
  delay(100);
}

Dengan delay 100ms, LED akan berkedip 5 kali lebih cepat dari sebelumnya!

Tantangan: Modifikasi program agar LED berkedip dengan pola SOS morse code: 3 kedipan cepat, 3 kedipan lambat, 3 kedipan cepat.

Langkah Selanjutnya