← Peta Belajar IoT / Fase 1 / Level 1.5
Fase 1 · Level 5 dari 6

LED meredup (PWM)

Pengatur Cahaya

Nyala-mati itu gampang. Sekarang kita atur seberapa terang.

Misi

Bikin LED meredup-terang bertahap (fade), bukan cuma nyala/mati. Teknik ini namanya PWM (Pulse Width Modulation).
Nyala 25% → LED redup (ledcWrite ≈ 64) 1 putaran (nyala lalu mati) Nyala 50% → LED sedang (ledcWrite ≈ 128) Nyala 75% → LED terang (ledcWrite ≈ 192)

Garis tinggi = LED nyala, garis rendah = LED mati. Di kode ini satu putaran berulang 5000 kali per detik, jadi mata melihat rata-ratanya: makin lama nyala dalam satu putaran, makin terang. Ilustrasi skematis buatan sendiri.

Bahan

Sama seperti level 1.4: board, breadboard, LED, resistor, jumper. Rangkaian TIDAK berubah, cuma kodenya beda.

Colok ke mana

Sama persis seperti level 1.4 (GPIO 4 → resistor → LED → GND). Kalau rangkaian level 1.4 masih terpasang, langsung lanjut ke kode. Gambar breadboard-nya ada di level 1.4.

Kode

Pilih sesuai versi ESP32 core yang terpasang di Arduino IDE kamu (cek di Boards Manager).

Core 3.x (terbaru)
#define LED_PIN 4

void setup() {
  ledcAttach(LED_PIN, 5000, 8); // pin, frekuensi, resolusi 8-bit (0-255)
}

void loop() {
  for (int b = 0; b <= 255; b++) {
    ledcWrite(LED_PIN, b);
    delay(10);
  }
  for (int b = 255; b >= 0; b--) {
    ledcWrite(LED_PIN, b);
    delay(10);
  }
}
Core 2.x (lebih lama)
#define LED_PIN 4
#define PWM_CHANNEL 0

void setup() {
  ledcSetup(PWM_CHANNEL, 5000, 8); // channel, frekuensi, resolusi 8-bit
  ledcAttachPin(LED_PIN, PWM_CHANNEL);
}

void loop() {
  for (int b = 0; b <= 255; b++) {
    ledcWrite(PWM_CHANNEL, b);
    delay(10);
  }
  for (int b = 255; b >= 0; b--) {
    ledcWrite(PWM_CHANNEL, b);
    delay(10);
  }
}

Cek hasil

LED meredup dan menerang secara bertahap dan halus (fade in-out), bukan cuma nyala-mati kedap-kedip.
kecerahan 255 0 naik ≈ 2,5 detik turun ≈ 2,5 detik ulang terus waktu →

Hitungan dari kodenya: 256 langkah × delay 10 ms ≈ 2,5 detik per arah. Ilustrasi skematis buatan sendiri.

Naik sekitar 2,5 detik, turun sekitar 2,5 detik. Sabar nunggu ya.

Kalau gagal

Error ledc? Berarti salah tab. Coba tab satunya.

LED-nya sudah bisa diatur. Tinggal satu level lagi.