RGB LED dengan Perulangan For — Arduino Uno R3

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.

Pemula · 20 menit

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)
CatatanPin 9, 10, 11 dipilih karena bertanda "~" — pin PWM yang bisa dipakai 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 — redPin jelas maksudnya dibanding angka 9 polos.
  • for (int i…)Variabel i naik 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.

rgb(0,0,0)
R
0
G
0
B
0
// Merah -> Hijau, i = 0

04Tantangan

Coba kerjakan tanpa lihat contoh dulu — pakai simulasi di atas untuk mengecek dugaanmu sebelum diunggah ke board asli.

  1. Tambahkan jeda 500ms setiap kali warna mencapai murni (merah, hijau, atau biru penuh) sebelum lanjut ke transisi berikutnya.
  2. Ganti delay(10) dengan nilai dari potensiometer di pin A0 (pakai analogRead() lalu map() ke rentang 1–40ms), supaya kecepatan transisi bisa diatur langsung dari rangkaian.
  3. Tambahkan sebuah push button di pin 2: selama tombol ditekan, transisi warna berhenti (freeze) di warna saat itu.
  4. Coba ganti salah satu baris analogWrite(redPin, 255 - i) menjadi analogWrite(redPin, -(255 - i)), unggah ke board, lalu amati LED-nya. Bandingkan dengan penjelasan soal nilai negatif PWM di atas — apakah hasilnya sesuai dugaanmu?
  5. Buat urutan warna baru yang melewati ungu (campuran merah + biru) sebelum kembali ke merah, jadi total ada 4 transisi bukan 3.
Handout ini boleh disalin ulang untuk keperluan belajar/mengajar.
Share:

0 Comments:

Post a Comment

About

BTemplates.com