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

درس ۹۸-۸: راه‌رفتن با نور با دکمه فشاری و ال‌ای‌دی‌ها با آردوینو

درس ۹۸-۸: راه‌رفتن با نور با دکمه فشاری و ال‌ای‌دی‌ها با آردوینو

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

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

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

  • یک انتخاب‌کننده منو در یک دستگاه که هر فشار گزینه بعدی را برجسته می‌کند.
  • یک نشانگر مرحله متوالی برای یک ماشین یا فرآیند (مرحله ۱، مرحله ۲، مرحله ۳...).
  • یک نمایش امتیاز یا سطح که به صورت دستی با یک دکمه آن را جلو می‌برید.
  • یک نشانگر «کانال بعدی» یا «حالت بعدی» برای یک کنترل‌کننده روشنایی.
  • یک بازی ساده یا زنگ مسابقه که در آن بازیکنان به نوبت لامپ بعدی را روشن می‌کنند.
  • یک ریلی یا ترتیب‌دهنده بار که هر فشار خروجی بعدی را به ترتیب فعال می‌کند.

مزیت اصلی نسبت به یک نور متحرک خودکار، کنترل است: تا زمانی که فشار ندهید هیچ اتفاقی نمی‌افتد، بنابراین نور فقط زمانی جلو می‌رود که شما تصمیم بگیرید. این ویدیو همچنین اشاره می‌کند که همان ایده تاگل کردن و ترتیب‌دهی می‌تواند یک ریلی را برای روشن کردن یک نور AC یا کنترل یک موتور به کار بگیرد، نه فقط LEDها (در ویدیو در ۱۹:۵۲).

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

لیست قطعات کوتاه و ارزان است:

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

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

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

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

سیم‌کشی اساساً همانند یک نور متحرک استاندارد پنج LED است، با یک دکمه فشاری اضافه شده. آند هر LED به پایه آردوینو خودش متصل می‌شود، و کاتد هر کدام از طریق مقاومت خودش به یک ریل زمین مشترک روی بردبورد متصل می‌شود. در این ساخت، LEDها به پایه‌های ۳، ۴، ۵، ۶ و ۷ سیم‌کشی شده‌اند (در ویدیو در ۳۱:۳۷). دکمه فشاری روی بردبورد قرار می‌گیرد با یک پایه به زمین و پایه دیگر به پایه ۲ — همان پینی که شِفر (کود) برای دکمه استفاده می‌کند (در ویدیو در ۳۷:۰۴).

از آنجا که شِفر (کود) مقاومت پول‌آپ داخلی آردوینو را فعال می‌کند، هیچ مقاومت خارجی روی دکمه لازم نیست. وقتی دکمه فشرده نشده باشد پایه HIGH می‌خواند، و وقتی آن را فشار می‌دهید پایه به زمین کشیده می‌شود و LOW می‌خواند (در ویدیو در ۱۴:۰۲).

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

برنامه کامل در زیر این مقاله موجود است. در اینجا ما روی بخش‌هایی تمرکز می‌کنیم که واقعاً می‌خواهید تغییر دهید.

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

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

متغیر LED_ON قلب این پروژه است. به یاد می‌آورد که کدام LED در حال حاضر روشن است، با شروع از LED1. هر بار که دکمه را فشار می‌دهید، شِفر (کود) LED_ON را به LED بعدی در توالی جلو می‌برد و LED قبلی را خاموش می‌کند، بنابراین فقط یک LED در هر زمان روشن است.

همچنین یک تأخیر کوچک پس از هر فشار وجود دارد:

delay(200); // debounce / give the user time between presses

این توقف ۲۰۰ میلی‌ثانیه‌ای از ثبت یک فشار فیزیکی واحد به عنوان چندین فشار جلوگیری می‌کند. اگر انگشتتان می‌لرزد یا دکمه بیش از حد حساس به نظر می‌رسد، این عدد را افزایش دهید؛ اگر پاسخ سریع‌تر می‌خواهید، آن را کاهش دهید. توجه داشته باشید که تنظیم آن بیش از حد پایین می‌تواند باعث شود نور به طور غیرمنتظره‌ای جلو بپرد (در ویدیو در ۴۱:۲۰).

منطق اصلی در loop() قرار دارد. این تابع دکمه را می‌خواند و تنها زمانی که دکمه فشرده شود (خواندن LOW) نور را جلو می‌برد. این توالی از زنجیره‌ای از بررسی‌های if / else if برای حرکت از LED1 به LED2 به LED3 و به همین ترتیب استفاده می‌کند و پس از آخرین LED به LED1 بازمی‌گردد. اگر می‌خواهید جهت یا ترتیب LEDها را تغییر دهید، این بلوکی است که باید ویرایش شود — به‌سادگی دوباره تعیین کنید که کدام پایه پس از کدام پایه می‌آید.

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

پس از آپلود شِفر (کود)، با فشردن دکمه اولین LED روشن می‌شود؛ با رها کردن آن، همان LED روشن می‌ماند. فشار بعدی نور را به LED دوم، سپس سوم، چهارم و پنجم منتقل می‌کند و فشار بعدی به LED اول بازمی‌گردد — یک چرخش پیوسته (در ویدیو در 40:22).

یک اثر جانبی خوب تأخیر 200 میلی‌ثانیه‌ای این است که اگر دکمه را نگه دارید، نور هر 200 میلی‌ثانیه به‌طور خودکار جلو می‌رود و در واقع پروژه را در حین نگه داشتن دکمه به یک نور متحرک خودکار تبدیل می‌کند (در ویدیو در 42:07). دکمه را رها کنید و روی LED فعلی متوقف می‌شود. این به شما هم گام‌برداری دستی و هم اجرای بدون‌دست را از یک دکمه واحد می‌دهد.

اگر ترجیح می‌دهید نور بدون هیچ دکمه‌ای به‌طور خودکار اجرا شود، آن یک ساخت جداگانه است. نسخه خودکار در درس 98-7: نور متحرک با استفاده از آردوینو و 5 LED پوشش داده شده است.

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

فصل‌ها

  • [00:00] مروری بر 10 پروژه LED آردوینو
  • [01:22] معرفی دوره گام‌به‌گام آردوینو
  • [02:29] درک LEDها: نمادها، قطبیت و پایه‌ها
  • [03:49] محاسبه مقاومت محدودکننده جریان LED
  • [30:47] نور متحرک با 5 LED: سیم‌کشی و اصل کار
  • [32:52] شِفر (کود) نور متحرک: پایه‌ها، زمان‌بندی و حلقه
  • [36:41] جلو بردن نور با دکمه فشاری
  • [37:44] نور متحرک با دکمه فشاری: بررسی شِفر (کود)
  • [40:22] نمایش و تنظیم تأخیر فشار
  • [57:16] سخنان پایانی و خروجی دوره

تصاویر

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
۵ LED روی بردبورد با دکمه فشاری که به Arduino UNO متصل است
۵ LED روی بردبورد با دکمه فشاری که به Arduino UNO متصل است
940-Lessson 98-LED-8: Arduino code walking LED light with push button
زبان: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

فایل‌ها📁

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

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