🤖 روبومیکرآموزش آردوینوشبیه‌ساز آنلاین
روبومیکرآموزش آردوینومحو شدن 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 کندتر و چشم‌نوازتر شود، یا کوچک‌تر کن تا سریع‌تر شود.

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

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