🌈 LED RGB (سهرنگ) (RGB LED)
| اسم انگلیسی | RGB LED |
|---|---|
| در ووکوی (Wokwi) | wokwi-rgb-led |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
LED RGB یا سهرنگ (RGB LED) سه LED قرمز، سبز و آبی را در یک بدنه دارد که یک پایهی مشترک دارند. با تنظیم شدت هر کدام با PWM تقریباً هر رنگی میسازی: لامپ خواب رنگی، نشانگر وضعیت سهحالته (سبز آماده، زرد صبر، قرمز خطا) یا نمایش دما با رنگ، از آبی سرد تا قرمز داغ.
LED RGB در ووکوی (Wokwi)
شناسهاش در ووکوی wokwi-rgb-led است با پایههای R، G، B و COM؛ بهطور پیشفرض کاتد مشترک است، پس COM به GND میرود. هر کانال یک مقاومت ۲۲۰ اهم دارد:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0 },
{ "type": "wokwi-rgb-led", "id": "rgb1", "top": -150, "left": 160 },
{ "type": "wokwi-resistor", "id": "r1", "top": -80, "left": 100, "attrs": { "value": "220" } },
{ "type": "wokwi-resistor", "id": "r2", "top": -80, "left": 150, "attrs": { "value": "220" } },
{ "type": "wokwi-resistor", "id": "r3", "top": -80, "left": 200, "attrs": { "value": "220" } }
],
"connections": [
[ "uno:9", "r1:1", "red", [] ],
[ "r1:2", "rgb1:R", "red", [] ],
[ "uno:10", "r2:1", "green", [] ],
[ "r2:2", "rgb1:G", "green", [] ],
[ "uno:11", "r3:1", "blue", [] ],
[ "r3:2", "rgb1:B", "blue", [] ],
[ "rgb1:COM", "uno:GND.1", "black", [] ]
]
}
در تینکرکد فارسی این قطعه با پایههای R، K (کاتد مشترک)، G و B در هر دو حالت رایگان است؛ مثال لامپ رنگینکمانی را باز کن و رنگها را زنده ببین.
سیمکشی با آردوینو
| پایهی قطعه | وصل به |
|---|---|
| R (قرمز) | پین 9 از راه ۲۲۰ اهم |
| G (سبز) | پین 10 از راه ۲۲۰ اهم |
| B (آبی) | پین 11 از راه ۲۲۰ اهم |
| پایهی مشترک (بلندترین) | GND برای کاتد مشترک، 5V برای آند مشترک |
هر کانال مقاومت خودش را میخواهد؛ یک مقاومت مشترک روی پایهی COM باعث میشود رنگها روی هم اثر بگذارند و با روشن شدن یک رنگ، بقیه کمنور شوند.
کد نمونه
این کد یک چرخهی رنگ نرم میسازد: قرمز به سبز، سبز به آبی و آبی دوباره به قرمز. با یک ثابت برای LED آند مشترک هم کار میکند:
// RGB LED colour wheel. Wiring: R -> 220 -> pin 9, G -> 220 -> pin 10,
// B -> 220 -> pin 11, common pin -> GND (or 5V for common anode)
const int PIN_R = 9;
const int PIN_G = 10;
const int PIN_B = 11;
const bool COMMON_ANODE = false; // true if the long leg goes to 5V
void setColor(int r, int g, int b) {
if (COMMON_ANODE) { // anode type: LOW = on
r = 255 - r;
g = 255 - g;
b = 255 - b;
}
analogWrite(PIN_R, r);
analogWrite(PIN_G, g);
analogWrite(PIN_B, b);
}
// 0..767 around the wheel: red -> green -> blue -> red
void wheel(int pos) {
if (pos < 256) setColor(255 - pos, pos, 0);
else if (pos < 512) setColor(0, 511 - pos, pos - 256);
else setColor(pos - 512, 0, 767 - pos);
}
void setup() {
pinMode(PIN_R, OUTPUT);
pinMode(PIN_G, OUTPUT);
pinMode(PIN_B, OUTPUT);
}
void loop() {
for (int p = 0; p < 768; p++) {
wheel(p);
delay(8);
}
}
تابع setColor قلب کار است: هر رنگی را با سه عدد ۰ تا ۲۵۵ میسازی، مثلاً setColor(255, 120, 0) برای نارنجی یا setColor(255, 255, 255) برای سفید.
تابع wheel هم فقط برای نمایش نیست. اگر بخواهی دما را با رنگ نشان بدهی، عدد سنسور را با map به بازهای بین ۵۱۱ (آبی، سرد) و ۰ (قرمز، داغ) ببر و همان را به wheel بده؛ رنگ با گرم شدن هوا از آبی به سبز و بعد به قرمز میرود. همین ایده با پتانسیومتر یا سنسور نور هم کار میکند.
اشتباههای رایج
- اشتباه گرفتن نوع: LED آند مشترک با پایهی بلند روی GND اصلاً روشن نمیشود و با کد کاتد مشترک رنگها برعکس دیده میشوند.
- پین بدون PWM: اگر یکی از رنگها را به پینی مثل ۷ یا ۸ بزنی، آن رنگ فقط خاموش یا روشن کامل است و ترکیب نرم خراب میشود.
- یک مقاومت مشترک: رنگها روی هم اثر میگذارند و ترکیبها پیشبینیپذیر نیستند.
- انتظار رنگ دقیق: چشم ما به سبز حساستر است و روشنایی کانالها برابر نیست؛ برای رنگ دلخواه عددها را با آزمون و خطا تنظیم کن.
آموزشهای مرتبط
- LED تکرنگ، پایهی همهی اینها
- نئوپیکسل، وقتی دهها LED رنگی با یک پین میخواهی
- رنگینکمان نئوپیکسل با آردوینو
- PWM روی ESP32 با ledc
- ۴۰ مدار آردوینو برای ووکوی، با لامپ رنگینکمانی RGB
سؤالهای رایج
LED RGB من آند مشترک است یا کاتد مشترک؟
پایهی بلندتر را یک بار به GND و یک بار به 5V بزن و یکی از پایههای رنگ را با مقاومت به طرف دیگر. اگر با پایهی بلند روی GND روشن شد، کاتد مشترک است؛ اگر روی 5V، آند مشترک. wokwi-rgb-led بهطور پیشفرض کاتد مشترک است.
چرا رنگ سفید LED RGB مایل به آبی یا صورتی است؟
سه LED داخلی روشنایی برابر ندارند و معمولاً سبز و آبی پرنورترند. با کم کردن عدد analogWrite کانال قویتر یا بزرگتر کردن مقاومتش، سفید را متعادل کن.
چند پایهی PWM برای LED RGB لازم است؟
سه پایه، یکی برای هر رنگ، تا ترکیبهای رنگی نرم بسازی. روی اونو پینهای ۳، ۵، ۶، ۹، ۱۰ و ۱۱ PWM دارند.