Cara Memakai LED RGB: Mencampur Warna dengan Arduino, Common Anode vs Common Cathode
Bagaimana cara kerja LED RGB dan bagaimana membedakan common cathode dan common anode? Pengkabelan Arduino, nilai resistor tiap warna, mencampur warna dengan analogWrite, efek pelangi, serta kode ESP32 dan Pico.
LED RGB adalah tiga LED terpisah dalam satu kemasan: merah, hijau, dan biru. Dengan mengatur kecerahan masing-masing secara terpisah, kamu bisa membuat hampir semua warna yang kamu mau, dari kuning sampai sian dan dari ungu sampai oranye. Setiap piksel di layar komputer bekerja dengan prinsip yang sama. Ini salah satu komponen Arduino paling seru untuk lampu status, lampu suasana, dan indikator notifikasi berwarna.

Bagaimana cara kerja LED RGB?
Warna cahaya bercampur secara aditif: merah dan hijau bersama terlihat kuning, hijau dan biru menghasilkan sian, merah dan biru menghasilkan ungu (magenta), dan ketiganya bersama menghasilkan putih. Arduino mengatur kecerahan setiap channel dari 0 sampai 255 dengan PWM. Secara teori, itu memberi 256 × 256 × 256 ≈ 16,7 juta kombinasi. PWM menyalakan dan mematikan LED ratusan kali per detik; matamu tidak bisa melihat kedipannya dan hanya menangkap kecerahan rata-ratanya.
| Warna | Merah | Hijau | Biru |
|---|---|---|---|
| Merah | 255 | 0 | 0 |
| Hijau | 0 | 255 | 0 |
| Biru | 0 | 0 | 255 |
| Kuning | 255 | 255 | 0 |
| Sian | 0 | 255 | 255 |
| Magenta | 255 | 0 | 255 |
| Oranye | 255 | 80 | 0 |
| Putih | 255 | 255 | 255 |
Common cathode atau common anode?
Kaki terpanjang dari empat kaki LED RGB adalah pin bersama yang dipakai ketiga LED. Kalau pin itu menyatukan katoda ketiga LED, LED-nya disebut common cathode; kalau menyatukan anodanya, disebut common anode. Dari luar keduanya terlihat sama, tetapi pengkabelan dan kodenya berkebalikan:
| Fitur | Common cathode (CC) | Common anode (CA) |
|---|---|---|
| Kaki panjang ke | GND | 5V |
| Untuk menyalakan warna | Buat pin HIGH (255) | Buat pin LOW (0) |
| Nilai di kode | analogWrite(pin, nilai) | analogWrite(pin, 255 - nilai) |
| Mati total | 0 | 255 |
Urutan pin dan pengkabelan Arduino
Pada LED RGB 5 mm yang umum, urutan pinnya adalah merah, bersama (terpanjang), hijau, biru, tetapi karena bisa berbeda antarprodusen, menguji setiap kaki adalah cara paling aman. Setiap warna dihubungkan melalui resistornya sendiri ke pin PWM. Di Arduino Uno, pin PWM adalah yang bertanda ~: 3, 5, 6, 9, 10, dan 11.
| Kaki | Koneksi | Pin Arduino Uno |
|---|---|---|
| Merah (R) | Melalui resistor | D9 |
| Bersama (terpanjang) | GND untuk common cathode, 5V untuk common anode | — |
| Hijau (G) | Melalui resistor | D10 |
| Biru (B) | Melalui resistor | D11 |
Nilai resistor: resistor terpisah untuk setiap warna
Setiap warna butuh tegangan berbeda untuk menyala (tegangan maju): sekitar 2,0 V untuk merah dan 3,0–3,2 V untuk hijau dan biru. Dengan target 20 mA di 5 V, merah butuh (5 − 2,0) / 0,020 = 150 Ω, sedangkan hijau dan biru butuh (5 − 3,2) / 0,020 ≈ 100 Ω. Dalam praktiknya, memasang 220 Ω di ketiganya aman dan masih cukup terang; keseimbangan warnanya bisa kamu atur di kode. Untuk menghitung nilaimu sendiri, pakai kalkulator resistor LED, dan untuk tegangan maju setiap warna, lihat tabel tegangan LED.
Mencampur warna dengan Arduino
Kode di bawah membungkus ketiga channel dalam satu fungsi setColor() dan menampilkan tujuh warna secara bergantian. Kalau LED-mu common anode, cukup ubah COMMON_ANODE menjadi true; fungsinya akan membalik nilainya untukmu.
1const int R_PIN = 9;
2const int G_PIN = 10;
3const int B_PIN = 11;
4const bool COMMON_ANODE = false; // ortak anotsa true yap / set true for common anode
5
6void setColor(int r, int g, int b) {
7 if (COMMON_ANODE) { r = 255 - r; g = 255 - g; b = 255 - b; }
8 analogWrite(R_PIN, r);
9 analogWrite(G_PIN, g);
10 analogWrite(B_PIN, b);
11}
12
13void setup() {
14 pinMode(R_PIN, OUTPUT);
15 pinMode(G_PIN, OUTPUT);
16 pinMode(B_PIN, OUTPUT);
17}
18
19void loop() {
20 setColor(255, 0, 0); delay(1000); // kırmızı / red
21 setColor(0, 255, 0); delay(1000); // yeşil / green
22 setColor(0, 0, 255); delay(1000); // mavi / blue
23 setColor(255, 255, 0); delay(1000); // sarı / yellow
24 setColor(0, 255, 255); delay(1000); // turkuaz / cyan
25 setColor(255, 0, 255); delay(1000); // mor / magenta
26 setColor(255, 255, 255); delay(1000); // beyaz / white
27}Transisi warna yang halus: efek pelangi
Daripada melompat dari satu warna ke warna lain, kalau kamu menurunkan satu channel sambil menaikkan channel lain, cahayanya mengalir halus dari merah ke hijau, hijau ke biru, lalu kembali ke merah. Loop di bawah memakai fungsi setColor() yang sama; ubah nilai delay untuk mengatur kecepatannya.
1// setColor() ve pin tanımları yukarıdaki gibi / setColor() and pins as above
2void loop() {
3 for (int i = 0; i < 256; i++) { setColor(255 - i, i, 0); delay(8); } // kırmızı → yeşil / red → green
4 for (int i = 0; i < 256; i++) { setColor(0, 255 - i, i); delay(8); } // yeşil → mavi / green → blue
5 for (int i = 0; i < 256; i++) { setColor(i, 0, 255 - i); delay(8); } // mavi → kırmızı / blue → red
6}Memilih warna dengan potensiometer
Kalau kamu menghubungkan tiga potensiometer ke A0, A1, dan A2, masing-masing bisa kamu pakai sebagai kenop untuk satu channel warna. analogRead() mengembalikan nilai dari 0 sampai 1023; membaginya dengan 4 menghasilkan rentang 0–255 yang dibutuhkan PWM. Pengkabelan potensiometer dijelaskan di Apa Itu Potensiometer?
1// A0, A1, A2'de üç potansiyometre; setColor() yukarıdaki gibi
2// three pots on A0, A1, A2; setColor() as above
3void loop() {
4 int r = analogRead(A0) / 4; // 0–1023 → 0–255
5 int g = analogRead(A1) / 4;
6 int b = analogRead(A2) / 4;
7 setColor(r, g, b);
8}LED RGB dengan ESP32 dan Raspberry Pi Pico
Di ESP32 dengan Arduino core terbaru (3.x), analogWrite() berfungsi di pin output mana pun, jadi kode di atas langsung berjalan setelah kamu mengganti nomor pinnya. Yang perlu diperhatikan hanya tegangan: pinnya mengeluarkan 3,3 V, jadi channel hijau dan biru, yang tegangan majunya mendekati 3 V, lebih redup. Di 3,3 V pakai resistor kecil seperti 47–100 Ω, atau nyalakan LED dari 5 V melalui transistor kalau kamu ingin benar-benar terang. Di Pico, kelas PWM MicroPython menerima nilai dari 0 sampai 65535:
1from machine import Pin, PWM
2import time
3
4pins = [PWM(Pin(n)) for n in (11, 12, 13)] # GP11 R, GP12 G, GP13 B
5for p in pins:
6 p.freq(1000)
7
8def set_color(r, g, b): # 0–255
9 for p, v in zip(pins, (r, g, b)):
10 p.duty_u16(v * 257) # 0–65535 (ortak anotta 65535 - v * 257)
11
12while True:
13 set_color(255, 0, 0); time.sleep(1) # kırmızı / red
14 set_color(0, 255, 0); time.sleep(1) # yeşil / green
15 set_color(0, 0, 255); time.sleep(1) # mavi / blueLED RGB biasa atau LED addressable (WS2812B)?
| Fitur | LED RGB biasa | WS2812B (NeoPixel) |
|---|---|---|
| Pin yang dibutuhkan | 3 pin PWM per LED | 1 pin data untuk seluruh strip |
| Kendali warna | Dengan output PWM Arduino | Dengan chip kecil di dalam setiap LED |
| Library | Tidak perlu | Adafruit NeoPixel atau FastLED |
| Paling cocok untuk | 1–2 LED, indikator status | Strip, ring, matriks, pencahayaan suasana |
Untuk satu atau dua lampu berwarna, LED RGB biasa adalah solusi paling sederhana dan murah. Kalau kamu ingin mewarnai puluhan LED satu per satu, 6 pin PWM Uno tidak cukup; di situlah kamu beralih ke strip WS2812B, yang mengendalikan ratusan LED lewat satu kabel.
Ide proyek dengan LED RGB
- Lampu suasana: masukkan efek pelangi ke dalam toples buram untuk lampu tidur yang lembut.
- Indikator suhu: gabungkan dengan DHT11 untuk lampu yang menyala biru ketika dingin, hijau ketika sejuk, dan merah ketika panas.
- Pencampur warna: buat warna apa pun secara manual dengan tiga potensiometer.
- Pilih warna dari ponsel: ganti warna lampu dari pemilih warna di halaman web yang disajikan ESP32.
- Lampu notifikasi: kedipkan LED dengan warna tertentu ketika ada email atau pesan baru.
- Warna dari keypad: tampilkan warna yang berbeda sesuai angka yang diketik di keypad.
Kesalahan umum dan cara mengatasinya
- Warnanya terbalik: kamu mengendalikan LED common anode seolah-olah common cathode; ubah COMMON_ANODE menjadi true.
- Satu warna tidak pernah menyala: urutan pinnya mungkin berbeda dari dugaanmu; uji setiap kaki satu per satu dengan resistor.
- Transisi patah-patah, tanpa gradasi: LED terpasang di pin non-PWM; di Uno, pin seperti itu hanya bisa menyala penuh atau mati.
- Warna kacau ketika buzzer berbunyi: di Uno, tone() memakai Timer2 dan merusak PWM di pin 3 dan 11; pindahkan LED RGB ke pin seperti 5, 6, 9, dan 10.
- Tidak memasang resistor: arus yang terlalu besar lama-lama merusak LED dan pin Arduino.
- Sangat redup di ESP32: di 3,3 V, hijau dan biru sudah di batasnya; pakai resistor lebih kecil atau transistor.
Kalau kamu ingin memahami dasar-dasar LED dan kenapa LED butuh resistor, lihat Apa Itu LED? dan Apa Itu Resistor? Di aplikasi BlueGrays kamu akan menemukan proyek transisi warna LED RGB, lampu yang dikendalikan keypad, dan pencampur warna lengkap dengan skema rangkaian dan kode.
Pertanyaan umum
Bagaimana cara mengetahui LED RGB-ku common anode atau common cathode?
Hubungkan kaki panjang ke GND lalu sentuhkan kaki lain ke 5V melalui resistor 220 Ω; kalau menyala, LED-nya common cathode. Kalau tidak, hubungkan kaki panjang ke 5V dan kaki lainnya ke GND melalui resistor; kalau sekarang menyala, LED-nya common anode. Mode uji dioda di multimeter juga bisa melakukan hal yang sama.
Resistor berapa yang sebaiknya dipakai untuk LED RGB?
Di 5 V, sekitar 150 Ω untuk merah dan sekitar 100 Ω untuk hijau dan biru adalah nilai ideal. Supaya sederhana, 220 Ω di ketiganya aman dan tetap memberi cahaya yang cukup terang. Resistor terpisah untuk setiap warna itu wajib.
Berapa banyak warna yang bisa dibuat LED RGB?
Setiap channel bisa mengambil 256 tingkat kecerahan dari 0 sampai 255, jadi secara teori ada 16,7 juta kombinasi. Dalam praktiknya, matamu hanya bisa membedakan lebih sedikit warna, dan perbedaan kecerahan antar-LED membuat beberapa gradasi terlihat mirip.
Kenapa LED RGB-ku terlihat kebiruan, bukan putih?
Kecerahan ketiga LED berbeda, dan matamu lebih peka terhadap warna tertentu; biasanya biru dan hijau yang dominan. Turunkan sedikit kedua channel itu di kode, atau pakai resistor yang lebih besar di keduanya, untuk putih yang lebih netral.
Apa yang terjadi kalau LED RGB dihubungkan ke pin non-PWM?
Channel itu hanya bisa menyala penuh atau mati total; analogWrite menganggap 128 ke atas sebagai nyala dan nilai di bawahnya sebagai mati. Kalau ketiga channel seperti itu, kamu hanya mendapat 8 warna dasar tanpa transisi halus.
Berapa banyak LED RGB yang bisa dikendalikan Arduino Uno?
Uno punya 6 pin PWM, jadi kamu bisa mengendalikan maksimal 2 LED RGB dengan warna yang berbeda-beda. Untuk lebih banyak, pakai driver PWM 16 channel seperti PCA9685, atau strip WS2812B yang mengendalikan ratusan LED dari satu pin.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Menggunakan LED RGB
Tiga warna tersembunyi di dalam satu LED: LED RGB menyala merah, lalu hijau, lalu biru, setiap warna menyala setengah detik dan mati setengah detik, sebelum siklusnya dimulai lagi. Yang kamu butuhkan

Transisi Warna Halus dengan LED RGB
Satu LED RGB perlahan bergeser dari merah ke hijau, hijau ke biru, lalu kembali ke merah, berputar melewati warna pelangi tanpa pernah berhenti. Setiap peralihan butuh sekitar dua setengah detik, dan

Kendali LED RGB ESP32
Menghasilkan warna tanpa batas dengan satu LED RGB alih-alih 3 LED terpisah. Seperti di Arduino, kita membuat transisi pelangi dengan mengatur nilai R/G/B lewat analogWrite(). Teori warna (seperti merah+hijau=kuning) terlihat secara praktis.

Lampu Pencampur Warna ESP32 (3 Potensiometer + LED RGB + OLED)
Lampu pencampur warna pintar: campur warna apa pun dengan memutar tiga potensiometer di ESP32! Ketika potensiometer merah, hijau, dan biru diputar, LED RGB katoda bersama berubah warna secara real-time. OLED SSD1306 menampilkan nilai setiap warna dalam rentang 0–255, bar pengisi, dan kode warna web HEX (seperti #FF8040). Studio warna mini yang mengajarkan teori warna RGB, pembacaan ADC, pengaturan kecerahan dengan PWM, dan desain layar I2C sekaligus.

Siklus Warna LED RGB Raspberry Pi Pico (PWM 3 Kanal)
Satu LED, jutaan warna! LED RGB berisi 3 LED: merah, hijau, dan biru. Masing-masing digerakkan dengan kanal PWM Pico sendiri: merah + hijau = kuning, hijau + biru = cyan, ketiganya = putih. LED berputar melewati 8 warna. Pelajari beberapa kanal PWM, mendefinisikan fungsi (def set_color(...)), pencampuran warna RGB (cara kerja layar), konversi 8-bit → 16-bit (x257 memetakan 0–255 ke 0–65535), dan LED katoda bersama vs anoda bersama.

Kendali Strip NeoPixel WS2812B ESP32
LED addressable WS2812B (NeoPixel) adalah LED RGB pintar yang bisa dikendalikan secara berantai lewat satu pin data. Di proyek ini, kita mengendalikan strip WS2812B 8 LED dengan library Adafruit_NeoPixel untuk membuat animasi pelangi yang halus. Meskipun level logika 3,3V ESP32 bekerja lancar dengan sebagian besar komponen WS2812B, kita menunjukkan solusi dengan resistor seri 470Ω dan kapasitor 1000µF untuk berjaga-jaga jika tidak stabil. Animasinya dibuat dengan menggeser nilai hue.

Menggunakan LED Strip WS2812B
Kenalan dengan LED strip pintar yang setiap lampunya bisa kamu warnai sendiri-sendiri. Arduino pertama-tama menyalakan lima LED pertama dengan warna merah, sedetik kemudian lima lainnya biru, lalu mem
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

