Komponen · 5 mnt baca

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.

LED RGB 5 mm dengan 4 kaki
LED RGB 5 mm: kaki terpanjang dari keempat kakinya adalah pin bersama; tiga lainnya adalah channel merah, hijau, dan biru.

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.

WarnaMerahHijauBiru
Merah25500
Hijau02550
Biru00255
Kuning2552550
Sian0255255
Magenta2550255
Oranye255800
Putih255255255

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:

FiturCommon cathode (CC)Common anode (CA)
Kaki panjang keGND5V
Untuk menyalakan warnaBuat pin HIGH (255)Buat pin LOW (0)
Nilai di kodeanalogWrite(pin, nilai)analogWrite(pin, 255 - nilai)
Mati total0255
Untuk mengetahui jenis yang kamu punya, hubungkan kaki panjang ke GND lalu sentuhkan salah satu kaki lain ke 5V melalui resistor 220 Ω. Kalau warnanya menyala, LED-nya common cathode. Kalau tidak, balik: kaki panjang ke 5V, kaki lainnya ke GND melalui resistor; kalau sekarang menyala, LED-nya common anode.

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.

KakiKoneksiPin Arduino Uno
Merah (R)Melalui resistorD9
Bersama (terpanjang)GND untuk common cathode, 5V untuk common anode—
Hijau (G)Melalui resistorD10
Biru (B)Melalui resistorD11

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.

Jangan pasang satu resistor saja di kaki bersama. Channel merah, yang tegangan majunya paling rendah, akan mengambil sebagian besar arus, warna lain akan tetap redup, dan campuran warnamu jadi meleset. Selalu beri setiap channel warna resistornya sendiri.

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.

C++ (Arduino IDE)
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.

C++ (Arduino IDE)
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}
Wajar kalau warna putih terlihat sedikit kebiruan atau kemerahmudaan, karena ketiga LED tidak sama terangnya. Menurunkan channel hijau dan biru menjadi 70–80% di kode memberi putih yang lebih alami. Menutup LED dengan bola pingpong atau kertas buram akan menyebarkan cahaya dan membuat warnanya jauh lebih menyatu.

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?

C++ (Arduino IDE)
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:

MicroPython
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 / blue

LED RGB biasa atau LED addressable (WS2812B)?

FiturLED RGB biasaWS2812B (NeoPixel)
Pin yang dibutuhkan3 pin PWM per LED1 pin data untuk seluruh strip
Kendali warnaDengan output PWM ArduinoDengan chip kecil di dalam setiap LED
LibraryTidak perluAdafruit NeoPixel atau FastLED
Paling cocok untuk1–2 LED, indikator statusStrip, 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.

Lihat semua proyek
Menggunakan LED RGB
#39Pemula
Premium

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

4.9(73)
98
Transisi Warna Halus dengan LED RGB
#40Pemula
Premium

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

4.8(58)
76
Kendali LED RGB ESP32
#111Pemula

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.

4.6(29)
51
Lampu Pencampur Warna ESP32 (3 Potensiometer + LED RGB + OLED)
#138Mahir
Premium

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.

4.7(6)
10
Siklus Warna LED RGB Raspberry Pi Pico (PWM 3 Kanal)
#161Pemula

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.

0.0(0)
6
Kendali Strip NeoPixel WS2812B ESP32
#126Menengah
Premium

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.

4.9(19)
30
Menggunakan LED Strip WS2812B
#69Menengah
Premium

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

4.8(54)
70