Pelajari cara mengendalikan LED RGB menggunakan perulangan `for()` pada Arduino Uno R3. Melalui proyek sederhana ini, Anda akan memahami perubahan intensitas warna secara bertahap menggunakan PWM, sekaligus mengenal konsep dasar perulangan dalam C++. Cocok bagi pemula yang ingin membangun fondasi pemrograman mikrokontroler dengan praktik langsung.
RGB LED dengan Perulangan for — Arduino Uno R3
Membuat LED RGB bertransisi halus dari merah → hijau → biru → merah menggunakan tiga blok for dan analogWrite().
01Alat & Rangkaian
LED RGB yang dipakai di sini tipe common cathode (kaki terpanjang = GND). Kalau LED-mu tipe common anode, tinggal ganti nilai 255 - i menjadi i dan sebaliknya pada kode di bawah.
- Pin 9→ resistor 220Ω → kaki Merah (R)
- Pin 10→ resistor 220Ω → kaki Hijau (G)
- Pin 11→ resistor 220Ω → kaki Biru (B)
- GND→ kaki common cathode (kaki terpanjang)
analogWrite() untuk mengatur kecerahan tiap warna dari 0–255.02Kode Program
Logikanya: setiap transisi warna (misal merah→hijau) dilakukan dengan satu for yang berjalan i = 0 sampai 255. Selama loop, satu channel diturunkan (255 - i) sementara channel berikutnya dinaikkan (i) — hasilnya warna berbaur secara halus.
#define redPin 9
#define greenPin 10
#define bluePin 11
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
// Merah -> Hijau
for (int i = 0; i <= 255; i++) {
analogWrite(redPin, 255 - i);
analogWrite(greenPin, i);
delay(10);
}
// Hijau -> Biru
for (int i = 0; i <= 255; i++) {
analogWrite(greenPin, 255 - i);
analogWrite(bluePin, i);
delay(10);
}
// Biru -> Merah
for (int i = 0; i <= 255; i++) {
analogWrite(bluePin, 255 - i);
analogWrite(redPin, i);
delay(10);
}
}
- #defineMemberi nama ke nomor pin supaya kode gampang dibaca —
redPinjelas maksudnya dibanding angka9polos. - for (int i…)Variabel
inaik dari 0 ke 255, dipakai sebagai nilai kecerahan sekaligus penghitung langkah transisi. - 255 - iTrik supaya satu channel meredup persis saat channel lain menyala, sehingga warnanya berbaur alih-alih berkedip.
- delay(10)Jeda 10ms tiap langkah — total satu transisi memakan waktu ±2.5 detik (256 × 10ms). Perkecil angka ini untuk transisi lebih cepat.
03Simulasi
Simulasi di bawah menjalankan logika for yang sama persis seperti kode di atas — bukan animasi acak.
04Tantangan
Coba kerjakan tanpa lihat contoh dulu — pakai simulasi di atas untuk mengecek dugaanmu sebelum diunggah ke board asli.
- Tambahkan jeda 500ms setiap kali warna mencapai murni (merah, hijau, atau biru penuh) sebelum lanjut ke transisi berikutnya.
- Ganti
delay(10)dengan nilai dari potensiometer di pinA0(pakaianalogRead()lalumap()ke rentang 1–40ms), supaya kecepatan transisi bisa diatur langsung dari rangkaian. - Tambahkan sebuah push button di pin 2: selama tombol ditekan, transisi warna berhenti (freeze) di warna saat itu.
- Coba ganti salah satu baris
analogWrite(redPin, 255 - i)menjadianalogWrite(redPin, -(255 - i)), unggah ke board, lalu amati LED-nya. Bandingkan dengan penjelasan soal nilai negatif PWM di atas — apakah hasilnya sesuai dugaanmu? - Buat urutan warna baru yang melewati ungu (campuran merah + biru) sebelum kembali ke merah, jadi total ada 4 transisi bukan 3.






0 Comments:
Post a Comment