🌗 PWM در آردوینو — چطور نور LED را کم و زیاد کنیم
پایههای دیجیتال آردوینو فقط دو حالت دارند: روشن یا خاموش. پس چطور میشود LED را نصفهنور کرد؟ جواب یک ترفند هوشمندانه است به نام PWM.
ترفند چیست؟
پایه را خیلی سریع — صدها بار در ثانیه — روشن و خاموش میکنیم. اگر نصف زمان روشن باشد، چشم ما آنقدر سریع نیست که سوسو را ببیند و LED را نصفنور میبیند. به درصد زمان روشنبودن، چرخهی کار میگویند.
کدام پایهها؟
در آردوینو Uno فقط پایههای علامتدار با ~ یعنی ۳، ۵، ۶، ۹، ۱۰ و ۱۱. روی بقیهی پایهها analogWrite فقط مثل روشن و خاموش ساده عمل میکند.
کد محو شدن نور
const int led = 9; // باید پایهی PWM باشد
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
for (int v = 0; v <= 255; v++) { // روشن شدن نرم
analogWrite(led, v);
delay(6);
}
for (int v = 255; v >= 0; v--) { // خاموش شدن نرم
analogWrite(led, v);
delay(6);
}
}
سه نکته
- مقدار
analogWriteبین ۰ تا ۲۵۵ است، نه ۰ تا ۱۰۰. - اسمش گولزننده است — خروجی واقعاً آنالوگ نیست، همان روشن و خاموش سریع است.
- چشم انسان خطی نمیبیند: عدد ۱۲۸ به نظر نصفنور نمیآید، روشنتر است. برای محو شدن طبیعیتر از منحنی نمایی استفاده کن.
کجا دیگر به کار میآید؟
سرعت موتور DC، ساختن رنگ با LED RGB، و فرمان دادن به سروو — همه با PWM.
محو شدن نور را توی شبیهساز ببین 🌗