Program Pertama: Blink LED

Blink LED adalah "Hello World"-nya dunia embedded system. Pada tutorial ini, kita akan membuat LED bawaan ESP32 (built-in LED) berkedip setiap 1 detik menggunakan Arduino IDE.

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.

Kode Program Blink LED

Berikut adalah kode lengkap untuk membuat LED berkedip:

// 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
}

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 selamanya 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.