🤖 روبومیکرآموزش آردوینوشبیه‌ساز آنلاین
روبومیکر › آموزش آردوینو › محو شدن LED با PWM (Fade)

محو شدن LED با PWM (Fade)

تا اینجا یاد گرفتیم LED را کاملاً روشن یا کاملاً خاموش کنیم. اما اگر بخواهیم روشنایی را کم و زیاد کنیم چه؟ اینجاست که PWM و دستور analogWrite به کمک ما می‌آیند. در این درس برنامه‌ی Fade را می‌سازیم؛ یعنی LED به‌آرامی روشن و سپس به‌آرامی محو می‌شود.

PWM چیست؟

آردوینو نمی‌تواند ولتاژ را واقعاً نصف کند، اما می‌تواند پایه را خیلی سریع روشن و خاموش کند. اگر نسبت زمان روشن‌بودن کم باشد، چشم ما LED را کم‌نور می‌بیند و اگر بیشتر باشد، پرنورتر. به این ترفند هوشمندانه PWM (مدولاسیون پهنای پالس) می‌گویند.

دستور analogWrite

برای استفاده از PWM از analogWrite(pin, value) استفاده می‌کنیم. مقدار value عددی بین 0 (کاملاً خاموش) تا 255 (کاملاً روشن) است. مثلاً analogWrite(9, 128) یعنی حدود نیمه‌روشن.

هشدار: analogWrite فقط روی پایه‌های مخصوص PWM کار می‌کند. این پایه‌ها روی برد با علامت ~ (مد) مشخص شده‌اند؛ مثلاً پایه‌های ۳، ۵، ۶، ۹، ۱۰ و ۱۱ روی آردوینو UNO. اگر روی پایه‌ی معمولی استفاده کنی، نتیجه‌ی نرم نمی‌گیری.

کد کامل Fade

int led = 9; // پایه PWM که LED به آن وصل است

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  // روشن شدن تدریجی: از ۰ تا ۲۵۵
  for (int i = 0; i <= 255; i++) {
    analogWrite(led, i);
    delay(5);
  }
  // محو شدن تدریجی: از ۲۵۵ تا ۰
  for (int i = 255; i >= 0; i--) {
    analogWrite(led, i);
    delay(5);
  }
}

توضیح کد

در ابتدا یک متغیر به نام led با مقدار ۹ ساختیم تا شماره‌ی پایه را یک‌جا نگه داریم. حلقه‌ی for اول، متغیر i را از ۰ تا ۲۵۵ یکی‌یکی زیاد می‌کند و هر بار با analogWrite روشنایی را کمی بالاتر می‌برد؛ نتیجه روشن‌شدن نرم است. حلقه‌ی دوم برعکس، i را از ۲۵۵ تا ۰ کم می‌کند تا LED آرام‌آرام محو شود. delay(5) بین هر قدم باعث می‌شود تغییر روشنایی به‌اندازه‌ای کند باشد که چشم آن را نرم ببیند.

نکته: عدد داخل delay را بزرگ‌تر کن (مثلاً delay(15)) تا Fade کندتر و چشم‌نوازتر شود، یا کوچک‌تر کن تا سریع‌تر شود.

این کد را همین حالا در حالت کدنویسی شبیه‌ساز روبومیکر بنویس و اجرا کن.

🔌 همین حالا توی شبیه‌ساز آنلاین روبومیکر امتحان کن — رایگان و بدون نصب