Selain menyalakan dan mematikan LED, Arduino juga bisa digunakan untuk membuat efek cahaya yang lebih halus, seperti fade in dan fade out. Efek ini membuat LED menyala perlahan dari redup ke terang, lalu kembali redup secara bertahap. Pada artikel ini, kita akan belajar beberapa cara membuat efek LED fade menggunakan Arduino, mulai dari metode sederhana dengan delay(), teknik yang lebih responsif menggunakan millis(), hingga penggunaan library ezLED agar kode lebih praktis dan mudah dibaca.
Komponen yang Dibutuhkan
- Arduino UNO
- DIYables STEM V3 (kompatibel dengan Arduino UNO R3)
- Kabel USB
- Breadboard
- Kabel jumper
- LED
- Resistor 220 Ohm
- Push button (opsional)
- LED module (opsional)
Mengenal Cara Kerja LED Fade
Efek fade pada LED dibuat menggunakan sinyal PWM (Pulse Width Modulation). Berbeda dengan output digital biasa yang hanya memiliki kondisi:
- HIGH → LED ON
- LOW → LED OFF
PWM memungkinkan Arduino menghasilkan tegangan “semu” dengan nilai tertentu sehingga kecerahan LED bisa diatur.
Memahami Nilai PWM
Pada Arduino, nilai PWM berada pada rentang 0 ≤ PWM ≤ 255.
Artinya:
- 0 → LED mati total
- 255 → LED menyala penuh
- Nilai di antaranya → LED menyala dengan tingkat kecerahan tertentu
Semakin besar nilai PWM, semakin terang LED.
Pin PWM pada Arduino
Tidak semua pin Arduino mendukung PWM. Pada Arduino UNO, pin PWM biasanya ditandai simbol (~). Contohnya:
- 3
- 5
- 6
- 9
- 10
- 11
Dalam tutorial ini kita akan menggunakan pin 9.
Cara Menghubungkan LED ke Arduino
Hubungkan rangkaian seperti berikut:
- Pin 9 Arduino → resistor 220 Ohm → anoda LED
- Katoda LED → GND
⚠️ Jangan lupa menggunakan resistor agar LED tidak rusak.
Mengatur Kecerahan LED dengan analogWrite()
Untuk menghasilkan sinyal PWM, Arduino menggunakan fungsi:
analogWrite(pin, brightness);
Contoh:
analogWrite(9, 128);
Artinya LED menyala sekitar setengah terang.
Membuat Efek Fade Menggunakan delay()
Metode pertama adalah cara paling sederhana dan sering digunakan pemula.
Kode Program
#define LED_PIN 9
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
Cara Kerja Program
1. LED mulai dari kondisi redup
2. Nilai brightness terus bertambah
3. Saat mencapai 255, arah berubah
4. Brightness mulai berkurang
5. Proses terus berulang
Hasilnya LED terlihat fade in dan fade out secara terus-menerus.
Penjelasan Bagian Penting Kode
1. Variabel brightness
int brightness = 0;
Digunakan untuk menyimpan tingkat kecerahan LED.
2. Variabel fadeAmount
int fadeAmount = 5;
Menentukan seberapa cepat perubahan brightness.
Semakin besar nilainya:
- Fade semakin cepat
Semakin kecil nilainya:
- Fade semakin halus
3. Membalik Arah Fade
if (brightness <= 0 || brightness >= 255)
Saat brightness mencapai batas minimum atau maksimum, arah perubahan dibalik.
Kelemahan Menggunakan delay()
Meskipun mudah dipahami, metode ini memiliki kekurangan.
Saat menjalankan:
delay(30);
Arduino berhenti sementara dan tidak bisa menjalankan tugas lain.
Akibatnya:
- Sensor bisa terlambat dibaca
- Tombol bisa tidak terdeteksi
- Program menjadi kurang responsif
Oleh karena itu, pada project yang lebih kompleks biasanya digunakan metode non-blocking menggunakan millis().
Membuat LED Fade Tanpa delay()
Sekarang kita akan membuat efek fade yang lebih smooth tanpa menghambat program lain.
Kode Program
#define LED_PIN 9
#define FADE_PERIOD 3000
unsigned long fadeStartTime;
void setup() {
pinMode(LED_PIN, OUTPUT);
fadeStartTime = millis();
}
void loop() {
unsigned long progress = millis() - fadeStartTime;
if (progress <= FADE_PERIOD) {
long brightness = map(progress, 0, FADE_PERIOD, 0, 255);
analogWrite(LED_PIN, brightness);
} else {
fadeStartTime = millis();
}
}
Apa yang Berbeda dari Sebelumnya?
Pada metode ini:
- Tidak menggunakan delay()
- Arduino tetap bisa menjalankan tugas lain
- Fade terlihat lebih smooth
- Program lebih responsif
Teknik seperti ini sering digunakan dalam project Arduino yang lebih profesional.
Memahami Fungsi millis()
Fungsi:
millis()
- Digunakan untuk menghitung waktu sejak Arduino dinyalakan.
- Dengan teknik ini kita bisa mengatur timing tanpa menghentikan seluruh program.
Fungsi map() pada LED Fade
Bagian penting lainnya adalah:
map(progress, 0, FADE_PERIOD, 0, 255);
Fungsi map() digunakan untuk mengubah nilai dari satu range ke range lain. Dalam kasus ini:
- waktu → diubah menjadi nilai brightness PWM
Kenapa Metode ini Lebih Baik?
Keuntungan menggunakan millis():
- LED fade lebih halus
- Tidak blocking
- Bisa menjalankan banyak task sekaligus
- Cocok untuk multitasking Arduino
Menggunakan Library ezLED
Selain menggunakan kode manual, efek fade juga bisa dibuat lebih mudah menggunakan library ezLED. Keuntungan menggunakan ezLED antara lain:
- Kode lebih singkat
- Mudah dipahami
- Tidak perlu mengatur timing manual
- Mendukung berbagai efek LED
Library ini cocok untuk pemula yang ingin fokus memahami konsep tanpa terlalu banyak mengatur timer.
Tips agar Efek Fade Lebih Bagus
- Gunakan nilai perubahan brightness kecil agar fade lebih smooth
- Gunakan delay kecil jika memakai metode delay()
- Gunakan LED berkualitas baik
- Hindari kabel longgar pada breadboard
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino



0 on: "Arduino LED Fade - Cara Membuat Efek Fade In dan Fade Out pada LED"