تا اینجا یاد گرفتیم LED را کاملاً روشن یا کاملاً خاموش کنیم. اما اگر بخواهیم روشنایی را کم و زیاد کنیم چه؟ اینجاست که PWM و دستور analogWrite به کمک ما میآیند. در این درس برنامهی Fade را میسازیم؛ یعنی LED بهآرامی روشن و سپس بهآرامی محو میشود.
آردوینو نمیتواند ولتاژ را واقعاً نصف کند، اما میتواند پایه را خیلی سریع روشن و خاموش کند. اگر نسبت زمان روشنبودن کم باشد، چشم ما LED را کمنور میبیند و اگر بیشتر باشد، پرنورتر. به این ترفند هوشمندانه PWM (مدولاسیون پهنای پالس) میگویند.
برای استفاده از PWM از analogWrite(pin, value) استفاده میکنیم. مقدار value عددی بین 0 (کاملاً خاموش) تا 255 (کاملاً روشن) است. مثلاً analogWrite(9, 128) یعنی حدود نیمهروشن.
analogWrite فقط روی پایههای مخصوص PWM کار میکند. این پایهها روی برد با علامت ~ (مد) مشخص شدهاند؛ مثلاً پایههای ۳، ۵، ۶، ۹، ۱۰ و ۱۱ روی آردوینو UNO. اگر روی پایهی معمولی استفاده کنی، نتیجهی نرم نمیگیری.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 کندتر و چشمنوازتر شود، یا کوچکتر کن تا سریعتر شود.این کد را همین حالا در حالت کدنویسی شبیهساز روبومیکر بنویس و اجرا کن.
🔌 همین حالا توی شبیهساز آنلاین روبومیکر امتحان کن — رایگان و بدون نصب