آموزش گام به گام آردوینو (بخش هشتم : کنترل نور LED)
با استفاده از تابع analogWrite() می توانیم کم نور یا پر نور کردن یک LED را نشان دهیم. AnalogWrite جهت روشن و خاموش کردن بسیار سریع یک پین دیجیتال برای ایجاد افکت کم نور کردن از pulse width modulation (PWM) استفاده می کند.با استفاده از تابع analogWrite() می توانیم کم نور یا پر نور کردن یک LED را نشان دهیم. AnalogWrite جهت روشن و خاموش کردن بسیار سریع یک پین دیجیتال برای ایجاد افکت کم نور کردن از pulse width modulation (PWM) استفاده می کند.
سخت افزار مورد نیاز
- برد آردوینو
- برد بورد
- یک LED
- یک مقاومت 220 اهمی
مدار
از طریق یک مقاومت 220 اهمی، آنود(پایه بلندتر و مثبت)LED تان را به پین دیجیتال خروجی 9 روی آردوینو وصل کنید. کاتود (پایه کوتاه تر و منفی) را مستقیم به زمین وصل کنید.
کد
بعد از معرفی کردن پین 9 به ledPin، کار شما در تابع setup() تمام می شود.
تابع analogWrite() که شما در تابع Loop() کدتان استفاده خواهید کرد به دو آرگومان نیاز دارد: یکی برای اینکه به تابع بگویید که روی کدام پین نوشته شود، و دیگری مقدارPWM ی که قرار است نوشته شود.
برای کم نور یا پر نورکردن یک LED ، به تدریج مفدار PWM شما از صفر(تمام بیت ها خاموش) به 255(تمام بیت ها روشن) افزایش می یابد، و بعد یک بار دیگر به مقدار صفر برمی گردد تا چرخه کامل شود. در برنامه ی آردوینو زیر، مقدار PWM با استفاده از متغیری به نام brightness تنظیم می شود. هر بار در Loop()، توسط مقدار متغیرfadeAmount افزایش می یابد.
اگر brightness در یکی از کران های مقدارش باشد (صفر یا 255) آنگاه fadeAmount به مقدار معکوس آن تغییر می کند. به عبارتی دیگر اگر fadeAmount حاوی مقدار 5 باشد، در این مرحله به 5- تبدیل می شود، اگر 5- باشد به 5 تبدیل می شود. بار بعد در Loop() این تغییر باعث می شود که brightness جهت را نیز تغییر دهد.
analogWrite() می تواند به سرعت مقدار PWM را تغییر دهد، بنابراین تأخیر در پایان برنامه سرعت پر نور یا کم نور شدن را کنترل می کند. تغییر مقدار تأخیر را تست کنید و ببینید که چطور برنامه تغییر می کند.
/* Fade This example shows how to fade an LED on pin 9 using the analogWrite() function. The analogWrite() function uses PWM, so if you want to change the pin you're using, be sure to use another PWM capable pin. On most Arduino, the PWM pins are identified with a "~" sign, like ~3, ~5, ~6, ~9, ~10 and ~11. This example code is in the public domain. */ int led = 9; // the PWM pin the LED is attached to int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin 9 to be an output: pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin 9: analogWrite(led, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); }