← Peta Belajar IoT / Fase 1 / Level 1.6
Fase 1 · Level 6 dari 6 (terakhir)

Tantangan akhir fase

Lulusan Fase 1

Level terakhir Fase 1. Kamu sudah bisa colok, kedip, dan atur terang-redup. Sekarang kamu yang atur kecepatannya.

Misi

Gabungkan semua yang dipelajari di Fase 1: bikin LED "bernapas" — menerang pelan lalu meredup pelan, berulang terus. Dengan kode dari level 1.5, satu arah makan sekitar 2,5 detik. Kalau sudah hafal polanya, coba ubah sendiri kecepatannya.
Kedip cepat 3x nyala 100 ms, mati 100 ms Napas naik ledcWrite 0 sampai 255 Napas turun ledcWrite 255 sampai 0 ulang terus

Alur program di contoh jawaban, dari kiri ke kanan lalu kembali ke awal. Ilustrasi skematis buatan sendiri.

Bahan

Rangkaian sama seperti level 1.4/1.5: board, breadboard, LED di GPIO 4, resistor, jumper.

Colok ke mana

Sama seperti level 1.4-1.5 (GPIO 4 → resistor → LED → GND). Kalau rangkaian sebelumnya masih terpasang, langsung lanjut.

Tantangan

  1. Ambil kode PWM dari level 1.5 (pilih versi core yang sama dengan yang kamu pakai).
  2. Ubah angka delay(10) di dalam loop fade jadi delay(30), upload ulang. Perhatikan: napas LED jadi lebih lambat (sekitar 7,7 detik per arah: 256 langkah x 30 ms).
  3. Coba ubah lagi ke delay(3). Perhatikan: napas jadi lebih cepat (sekitar 0,8 detik per arah: 256 langkah x 3 ms).
  4. (Opsional, lebih sulit) coba bikin LED berkedip cepat 3x dulu, baru lanjut fade pelan seperti biasa. Kedipnya pakai ledcWrite juga (255 = nyala penuh, 0 = mati), karena pin ini sudah diatur untuk PWM. Contoh jawaban ada di bawah.
Lihat contoh jawaban (buka setelah coba sendiri dulu)
Core 3.x (terbaru)
#define LED_PIN 4

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

void kedipCepat(int kali) {
  for (int i = 0; i < kali; i++) {
    ledcWrite(LED_PIN, 255);
    delay(100);
    ledcWrite(LED_PIN, 0);
    delay(100);
  }
}

void loop() {
  kedipCepat(3);
  for (int b = 0; b <= 255; b++) { ledcWrite(LED_PIN, b); delay(20); }
  for (int b = 255; b >= 0; b--) { ledcWrite(LED_PIN, b); delay(20); }
}
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 kedipCepat(int kali) {
  for (int i = 0; i < kali; i++) {
    ledcWrite(PWM_CHANNEL, 255);
    delay(100);
    ledcWrite(PWM_CHANNEL, 0);
    delay(100);
  }
}

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

Catatan: kedipCepat pakai ledcWrite supaya cocok dengan pin yang sudah diatur PWM. Kalau ada perilaku aneh di board kamu, laporkan supaya dicek ulang — bagian ini belum diuji di board nyata.

Cek hasil

LED berhasil berkedip dan meredup sesuai urutan yang kamu susun, dan kamu bisa jelaskan bedanya digitalWrite (nyala/mati) vs ledcWrite (bertahap).

Kamu bisa jelasin beda digitalWrite sama ledcWrite? Berarti kamu paham.

Kalau gagal

Nggak masalah kalau tantangan opsional (poin 4) belum berhasil — yang penting poin 1-3 (ubah kecepatan fade) sudah dicoba dan kelihatan bedanya. Itu sudah cukup untuk lanjut ke Fase 2 nanti.

Poin 1-3 sudah cukup. Poin 4 itu bonus.

🎉
Fase 1 selesai!

Fase 2 (tombol, sensor, Wi-Fi) akan dibuka setelah materinya siap dan diuji di board nyata.

Fase 1 resmi tuntas. Sampai ketemu di peta!