🌈 چراغ خلق‌وخو — لامپی که رنگ عوض می‌کند

یکی از رضایت‌بخش‌ترین پروژه‌های اول: یک چراغ که آرام‌آرام رنگ عوض می‌کند. قطعات کم، نتیجه چشمگیر.

ترکیب رنگ

LED RGB در واقع سه LED در یک بدنه است. با کم و زیاد کردن هرکدام بین ۰ تا ۲۵۵، هر رنگی می‌سازی: قرمز + سبز = زرد، سبز + آبی = فیروزه‌ای، هر سه = سفید.

مدار

سه پایه‌ی رنگ، هرکدام از طریق مقاومت ۲۲۰ اهمی خودش، به پایه‌های PWM (۹، ۱۰، ۱۱). پایه‌ی بلند مشترک به GND (نوع کاتد مشترک) یا به ۵ ولت (نوع آند مشترک).

⚠️ هر کانال مقاومت جدا می‌خواهد. یک مقاومت مشترک روی پایه‌ی بلند باعث می‌شود رنگ‌ها روی هم اثر بگذارند و ترکیب‌ها اشتباه دربیایند.

چرخه‌ی نرم رنگین‌کمان

const int R = 9, G = 10, B = 11;

void setColor(int r, int g, int b) {
  analogWrite(R, r);
  analogWrite(G, g);
  analogWrite(B, b);
}

void setup() {
  pinMode(R, OUTPUT); pinMode(G, OUTPUT); pinMode(B, OUTPUT);
}

void loop() {
  // قرمز به سبز
  for (int i = 0; i < 256; i++) { setColor(255 - i, i, 0); delay(12); }
  // سبز به آبی
  for (int i = 0; i < 256; i++) { setColor(0, 255 - i, i); delay(12); }
  // آبی به قرمز
  for (int i = 0; i < 256; i++) { setColor(i, 0, 255 - i); delay(12); }
}

چرا این‌طور نرم است؟

در هر حلقه یک رنگ کم می‌شود و رنگ بعدی به همان اندازه زیاد — پس روشنایی کل ثابت می‌ماند و گذر رنگ بدون پرش انجام می‌شود.

نسخه‌ی کنترل‌دار

// با پتانسیومتر رنگ را انتخاب کن
int pos = map(analogRead(A0), 0, 1023, 0, 767);
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);

اگر آند مشترک داری

منطق برعکس می‌شود: analogWrite(pin, 0) یعنی کاملاً روشن. کافی است همه‌جا 255 - value بنویسی.

چراغ رنگی‌ات را بساز 🌈

مقاله‌های دیگر

🤖

آردوینو چیست؟ راهنمای کامل برای شروع از صفر

بهترین شبیه‌ساز مدار آنلاین فارسی — چرا شبیه‌ساز، و چرا روبومیکر؟

💡

ساده‌ترین پروژه الکترونیک برای بچه‌ها: روشن‌کردن یک LED