شِفر (کود) جستجو

درس ۹۸-۵: محو کردن نور هنگام فشردن دکمه با استفاده از آردوینو

درس ۹۸-۵: محو کردن نور هنگام فشردن دکمه با استفاده از آردوینو

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

LED با مقاومت روی بردبورد متصل به آردوینو با یک دکمه فشاری
LED با مقاومت روی بردبورد متصل به آردوینو با یک دکمه فشاری

محو شدن در صورت تقاضا همه‌جا در محصولات واقعی دیده می‌شود. در اینجا چند روش عملی وجود دارد که می‌توانید از آنچه در اینجا یاد می‌گیرید استفاده کنید:

  • چراغ‌های نشانگر خاموشی نرم — به‌جای اینکه یک لامپ ناگهان خاموش شود، وقتی دکمه‌ای را فشار می‌دهید به‌آرامی کم‌نور می‌شود، که روی لوازم خانگی و محفظه‌های چاپ سه‌بعدی بسیار حرفه‌ای‌تر به نظر می‌رسد.
  • حالت خواب / آماده‌به‌کار — دکمه‌ای را فشار دهید و یک LED وضعیت روشن تا سیاه محو می‌شود تا شب مزاحم شما نشود، در حالی که مدار همچنان برق دارد.
  • نورپردازی صحنه یا ماکت با «محو شدن تا سیاهی» — یک دکمه واحد باعث کم‌نور شدن نرم یک نوار یا پنل LED می‌شود، به‌جای قطع ناگهانی.
  • بازخورد صرفه‌جویی در باتری — یک فشار لحظه‌ای دکمه به شما یک فلاش تأیید روشن می‌دهد که محو می‌شود، بنابراین LED فقط برای مدت کوتاهی کاملاً روشن است.
  • هنر تعاملی و پروپ‌ها — یک افکت «بازدم» که با لمس فعال می‌شود، ایده‌آل برای کاسپلی، دیوراما، یا نمایش‌های موزه‌ای.

ایده اصلی ساده است: دکمه به آردوینو می‌گوید «الان شروع به محو شدن کن»، و آردوینو روشنایی LED را از ۲۵۵ (کامل) به ۰ (خاموش) در گام‌های کوچک کاهش می‌دهد. چون گام‌ها کوچک هستند و به‌سرعت اتفاق می‌افتند، چشم شما یک محو شدن نرم می‌بیند نه یک پرش.

اگر قبلاً هرگز LED را محو نکرده‌اید، کنترل روشنایی زیربنایی در درس ۹۸-۴: محو کردن چراغ LED با استفاده از آردوینو: کنترل روشنایی پوشش داده شده است. این درس مستقیماً بر آن پایه بنا می‌شود و یک دکمه فشاری را به‌عنوان محرک اضافه می‌کند.

سخت‌افزار و قطعات

مقاومت ۳۳۰ اهم
مقاومت ۳۳۰ اهم

این یک ساخت بسیار کم‌هزینه است — همه چیز در اینجا مواد استاندارد کیت شروع است:

  • برد آردوینو (Uno، Nano، Mega، یا هر برد سازگار)
  • یک LED (۵ میلی‌متری یا ۳ میلی‌متری، هر رنگی)
  • یک کلید دکمه فشاری (نوع لحظه‌ای، تاکتیکی ۴ پایه خوب کار می‌کند)
  • یک مقاومت برای LED — هر جایی از ۲۰۰ Ω تا ۱۰۰۰ Ω (۲۲۰ Ω یا ۳۳۰ Ω کلاسیک عالی است)
  • بردبورد و سیم‌های جامپر دوپون
  • کابل USB برای برنامه‌ریزی (و یک باتری یا آداپتور ۵ ولت اگر می‌خواهید بدون سیم کار کند)

یک نکته سریع درباره مقاومت LED: یک LED تقریباً به ۲ ولت ولتاژ و حدود ۱۰ میلی‌آمپر جریان نیاز دارد. با منبع ۵ ولت، مقاومت باید ۳ ولت باقی‌مانده را بیندازد، بنابراین قانون اهم حدود ۳۰۰ Ω می‌دهد. هر چیزی از ۳۰۰ Ω تا ۱۰۰۰ Ω کار می‌کند — مقادیر بالاتر فقط LED را کم‌نورتر می‌کنند. استفاده از مقاومت اختیاری نیست؛ بدون آن LED جریان بسیار بیشتری می‌کشد و می‌سوزد.

راهنمای سیم‌کشی

شماتیک آردوینو برای LED با یک کلید دکمه فشاری
شماتیک آردوینو برای LED با یک کلید دکمه فشاری
سیم‌کشی آردوینو برای LED با یک کلید دکمه فشاری
سیم‌کشی آردوینو برای LED با یک کلید دکمه فشاری

سیم‌کشی عمداً حداقلی است. آند LED (پایه بلندتر) از طریق مقاومت به پایه دیجیتال ۳ متصل می‌شود، و کاتد آن (پایه کوتاه‌تر، با طرف صاف روی بدنه) به زمین می‌رود. دکمه فشاری بین پایه دیجیتال ۲ و زمین متصل می‌شود — هیچ مقاومت پول‌آپ خارجی لازم نیست زیرا شِفر (کود) پول‌آپ داخلی آردوینو را فعال می‌کند.

به قطبیت LED توجه کنید: طرف صاف بدنه پلاستیکی و پایه کوتاه‌تر کاتد (منفی) را مشخص می‌کنند. اگر آن را برعکس وارد کنید، LED به‌سادگی روشن نمی‌شود — آسیبی رخ نمی‌دهد، فقط آن را برگردانید.

برای دکمه فشاری، اگر از یک کلید تاکتیکی ۴ پایه استفاده می‌کنید، به یاد داشته باشید که پایه‌ها به‌صورت داخلی جفت شده‌اند: دو تا از چهار پایه همیشه به هم متصل هستند. از یک مولتی‌متر در حالت پیوستگی استفاده کنید تا جفتی را پیدا کنید که هنگام فشار دادن بوق می‌زند، سپس از یک پایه از هر طرف استفاده کنید. یک طرف به پایه ۲ می‌رود، طرف دیگر به زمین.

توضیح شِفر (کود)

اسکچ کوتاه است، و تقریباً هر چیزی که ممکن است بخواهید تغییر دهید در چند خط در بالای آن قرار دارد. در اینجا بخش‌های قابل تنظیم توسط کاربر آمده است:

const int pushButtonPin = 2;//پینی که کلید فشاری به آن متصل است
const int LEDPin = 3;//پینی که LED به آن متصل است
const int fadeAmount = 10;    // مقدار کاهش روشنایی LED در هر مرحله
const int fadeSpeed = 5;//زمان محو شدن بر حسب میلی‌ثانیه. هرچه مقدار کمتر باشد، محو شدن سریع‌تر است

pushButtonPin و LEDPin به سادگی به آردوینو می‌گویند که سیم‌ها را به کدام پایه‌ها وصل کرده‌اید. اگر دکمه را به پایه ۴ یا LED را به پایه ۹ (یک پایه دارای قابلیت PWM) منتقل کنید، فقط این دو عدد را مطابق با سیم‌کشی خود تغییر دهید. توجه داشته باشید که پایه LED باید از PWM پشتیبانی کند — در یک Uno این به معنای پایه‌های ۳، ۵، ۶، ۹، ۱۰ یا ۱۱ است — زیرا محو شدن نیازمند analogWrite() است.

fadeAmount اندازه هر گام روشنایی را کنترل می‌کند. روشنایی از ۰ تا ۲۵۵ متغیر است، بنابراین fadeAmount برابر با ۱۰ به این معناست که LED در حدود ۲۵ گام کم‌نور می‌شود. عدد بزرگ‌تر باعث می‌شود محو شدن درشت‌تر و سریع‌تر باشد؛ عدد کوچک‌تر آن را نرم‌تر و کندتر می‌کند.

fadeSpeed تأخیر بر حسب میلی‌ثانیه بین هر گام است. این مهم‌ترین پارامتر برای اینکه اثر چگونه احساس شود است. مقدار ۵ میلی‌ثانیه یک محو شدن سریع و تند می‌دهد؛ مقدار ۳۰ میلی‌ثانیه یا بیشتر یک کم‌نور شدن آهسته و لطیف می‌دهد. همراه با fadeAmount، این دو مقدار به شما اجازه می‌دهند محو شدن را دقیقاً با شخصیت دلخواه خود تنظیم کنید.

یک متغیر داخلی نیز وجود دارد که دانستن آن ارزشمند است:

int brightness = 255;    // میزان روشنایی LED
int pushButtonStatus = 0; // مقدار فشردن از پایه ۲

brightness از ۲۵۵ شروع می‌شود، یعنی LED هر بار که دکمه را فشار می‌دهید از روشنایی کامل آغاز می‌شود. اگر می‌خواهید محو شدن از نقطه‌ای کم‌نورتر شروع شود — مثلاً نصف روشنایی — این را به ۱۲۸ تغییر دهید.

منطق خود به این صورت کار می‌کند: حلقه دکمه را می‌خواند. اگر فشرده شده باشد (LOW، به دلیل pull-up داخلی)، یک حلقه while تا زمانی که brightness بالای صفر باشد اجرا می‌شود. در داخل آن حلقه، آردوینو روشنایی فعلی را به LED می‌نویسد، fadeAmount را کم می‌کند، fadeSpeed میلی‌ثانیه صبر می‌کند و تکرار می‌کند. وقتی دکمه فشرده نشده باشد، LED به سادگی روی ۰ نوشته می‌شود و خاموش می‌ماند.

یک نکته مهم: pull-up داخلی باعث می‌شود پایه وقتی دکمه فشرده نشده است HIGH بخواند و وقتی فشرده شده است LOW بخواند. به همین دلیل شِفر (کود) برای تشخیص فشار، LOW را بررسی می‌کند. اگر روزی به مقاومت pull-down خارجی تغییر دهید، باید آن مقایسه را به HIGH تغییر دهید.

پروژه زنده و نمایش عملی

پس از آپلود، رفتار فوری و رضایت‌بخش است. دکمه را فشار دهید و LED به روشنایی کامل می‌پرد، سپس در طول دوره‌ای که شما کنترل می‌کنید به طور قابل مشاهده تا خاموشی کم‌نور می‌شود. دکمه را رها کنید و LED تاریک می‌شود؛ دوباره فشار دهید و محو شدن از روشنایی کامل دوباره شروع می‌شود.

در ویدیو محو شدن با چندین تنظیم مختلف نمایش داده می‌شود تا بتوانید تفاوت را ببینید و بشنوید. با fadeAmount = 20 محو شدن سریع و پله‌ای است — در چند گام قابل مشاهده به صفر می‌رسد. کاهش به fadeAmount = 10 آن را به طور قابل توجهی نرم‌تر می‌کند، و رفتن به fadeAmount = 3 باعث می‌شود محو شدن به طور محسوسی طولانی‌تر شود و تقریباً پیوسته به نظر برسد. مقدار fadeSpeed اثر به همان اندازه چشمگیری دارد: تنظیم آن روی ۱ میلی‌ثانیه محو شدن را تقریباً آنی می‌کند، در حالی که مقادیر بزرگ‌تر آن را کش می‌دهند.

این آزمایش را امتحان کنید: fadeAmount = 5 و fadeSpeed = 30 را تنظیم کنید. یک کم‌نور شدن آهسته و ملایم خواهید داشت که مانند خاموش شدن تدریجی یک چراغ به نظر می‌رسد. سپس fadeAmount = 50 و fadeSpeed = 1 را برای یک قطع سخت و سریع تنظیم کنید. هیچ‌کدام "اشتباه" نیستند — کاملاً به حال و هوایی که می‌خواهید بستگی دارد.

رفتار تاگل کردن همان دکمه به طور جداگانه در درس ۹۸-۳: چگونه یک LED تاگل را با استفاده از دکمه فشاری با آردوینو روشن/خاموش کنیم پوشش داده شده است، و نسخه ساده‌تر فشار-برای-روشن شدن در درس ۹۸-۲: چگونه یک LED را با استفاده از دکمه فشاری با آردوینو روشن و خاموش کنیم آمده است.

از آنجا که محو شدن توسط یک تماس لحظه‌ای فعال می‌شود، همین مدار به طور طبیعی برای راه‌اندازی یک ریلی یا MOSFET به جای LED مناسب است — می‌توانید یک لامپ ۱۲ ولتی، راه‌اندازی نرم یک موتور، یا گرم شدن تدریجی یک المنت حرارتی را محو کنید. دکمه فقط ماشه است؛ آنچه را که محو می‌کنید به خودتان بستگی دارد.

پروژه‌های مرتبط از این ویدیو

فصل‌ها

  • [00:00] مروری بر ۱۰ پروژه LED
  • [01:00] مقدمه‌ای بر دوره گام‌به‌گام آردوینو
  • [02:29] مبانی LED: نمادها، قطبیت و جریان
  • [03:49] محاسبه مقاومت LED با قانون اهم
  • [05:53] پروژه ۱: روشن و خاموش کردن یک LED
  • [12:43] پروژه ۲: LED با دکمه فشاری
  • [17:13] پروژه ۳: تغییر وضعیت LED با دکمه فشاری
  • [20:12] پروژه ۴: محو کردن یک LED
  • [23:20] پروژه ۵: محو کردن یک LED با دکمه فشاری
  • [27:32] پروژه ۶: LED الاکلنگی
  • [30:47] پروژه ۷: نور متحرک
  • [36:41] پروژه ۸: نور متحرک با دکمه فشاری
  • [42:25] پروژه ۹: ولت‌متر سطح ولتاژ LED
  • [49:25] پروژه ۱۰: چراغ راهنمایی آردوینو

تصاویر

Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
LED با مقاومت روی بردبورد متصل به آردوینو با یک دکمه فشاری
LED با مقاومت روی بردبورد متصل به آردوینو با یک دکمه فشاری
937-Lessson 98-LED-5: Arduino code to fade the LED when push button is pressed
زبان: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

مواردی که ممکن است به آن‌ها نیاز داشته باشید

فایل‌ها📁

کتابخانه‌های آردوینو (zip)

راهنمای کاربر