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

درس ۵ از ۱۰: کنترل LED RGB WS2812B با استفاده از Raspberry Pi Pico

درس ۵ از ۱۰: کنترل LED RGB WS2812B با استفاده از Raspberry Pi Pico

این درس، بخشی از دوره ماشین هوشمند Robojax Raspberry Pi Pico، بر کنترل نوار LED رنگی (WS2812B) در کیت ماشین چهارچرخ SunFounder تمرکز دارد. شما فراتر از کنترل ساده روشن/خاموش خواهید رفت و یاد می‌گیرید که چگونه مقادیر قرمز، سبز و آبی را ترکیب کنید تا هر رنگی ایجاد کنید، LEDهای جداگانه را کنترل کنید و توالی‌های نوری پویا مانند افکت نور «راه‌رفتن» بسازید. این مهارت برای افزودن بازخورد بصری و شخصیت به پروژه‌های رباتیک شما اساسی است.

کنترل LEDهای RGB یک مهارت اصلی برای هر پروژه رباتیک یا الکترونیکی است. در اینجا چند کار عملی وجود دارد که می‌توانید با این دانش بسازید:

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

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

این پروژه از قطعاتی استفاده می‌کند که با کیت ماشین چهارچرخ SunFounder Raspberry Pi Pico عرضه می‌شوند. جزء کلیدی خود نوار LED RGB است که توسط Raspberry Pi Pico کنترل می‌شود.

  • Raspberry Pi Pico
  • کیت ماشین چهارچرخ SunFounder (که شامل نوار LED RGB WS2812B است)
  • باتری برای ماشین (برای تأمین برق LEDها، همانطور که در ویدیو ذکر شد)

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

درس ویدیویی فرآیند سیم‌کشی را جزئیات نمی‌دهد، زیرا بخشی از طراحی از پیش مونتاژ شده کیت ماشین است. LEDها قبلاً به Raspberry Pi Pico متصل شده‌اند. برای راه‌اندازی سفارشی، معمولاً پایه داده نوار WS2812B را به یک پایه GPIO روی Pico، همراه با برق (5V) و زمین (GND) متصل می‌کنید. از آنجا که این درس از کیت ماشین استفاده می‌کند، هیچ سیم‌کشی اضافی لازم نیست.

اگر این را روی بردبورد می‌سازید، خط داده نوار LED خود را به یک پایه GPIO (مثلاً GP0) متصل کرده و آن را با منبع تغذیه خارجی 5V تأمین کنید.

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

درس بر استفاده از توابع از پیش نوشته شده از کتابخانه کیت ماشین تمرکز دارد. تابع اصلی برای کنترل چراغ‌ها set_light_color() است. این متد روی شیء ماشین فراخوانی می‌شود و دو آرگومان اصلی می‌گیرد: شماره شناسه چراغ و لیستی از سه مقدار که شدت قرمز، سبز و آبی (RGB) را نشان می‌دهد.

در اینجا تجزیه‌ای از نحوه استفاده از توابع کلیدی نشان داده شده در ویدیو آمده است:

  • car.set_light_color(LED_ID, [R, G, B]): این مستقیم‌ترین راه برای کنترل یک LED جداگانه است. LED_ID یک عدد صحیح از 0 تا 23 است و رنگ لیستی مانند [255, 0, 0] برای قرمز است.
  • توابع کمکی کتابخانه: کتابخانه کیت توابع سطح بالاتری مانند set_all_light_color()، set_bottom_left_color() و set_bottom_right_color() را برای کنترل آسان‌تر گروه‌های LED فراهم می‌کند.

برای ایجاد یک رنگ سفارشی، می‌توانید سه مقدار در لیست را تنظیم کنید. به عنوان مثال، [255, 255, 0] زرد می‌سازد، [0, 255, 255] فیروزه‌ای می‌سازد و [255, 0, 255] صورتی یا سرخابی می‌سازد. ویدیو ایجاد این رنگ‌ها را با ترکیب مقادیر اصلی RGB نشان می‌دهد.

برای رنگ‌های تصادفی، می‌توانید از تابع random.randint(0, 255) برای تولید مقادیر تصادفی برای R، G و B استفاده کنید، همانطور که در مثال «تصادفی» نشان داده شده است. این یک رنگ تصادفی و منحصر به فرد به هر یک از 24 LED اختصاص می‌دهد.

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

در ویدیو، مربی مفاهیم را به صورت زنده نشان می‌دهد. او ابتدا نشان می‌دهد که چگونه همه چراغ‌های پایین را با تنظیم مقادیر RGB روی [0, 255, 0] به سبز یکدست روشن کند. سپس، رنگ را با تنظیم [255, 0, 0] به قرمز تغییر می‌دهد. نمایش با نشان دادن نحوه کنترل LEDهای جداگانه با شماره شناسه (0-23) و تنظیم مستقل رنگ‌های آنها ادامه می‌یابد.

بخش قابل توجهی از ویدیو به ایجاد افکت «نور راه‌رفتن» اختصاص دارد. این کار با یک حلقه for انجام می‌شود که از 1 تا 24 تکرار می‌شود. در هر تکرار، LED فعلی را برای مدت زمان مشخصی (مثلاً 300 میلی‌ثانیه) روشن می‌کند و سپس آن را برای مدت زمان بسیار کوتاهی (مثلاً 10 میلی‌ثانیه) خاموش می‌کند قبل از اینکه به بعدی برود. این توهم نوری را ایجاد می‌کند که در طول نوار حرکت می‌کند. مربی همچنین نشان می‌دهد که چگونه سرعت این افکت را با تغییر مقادیر تأخیر تنظیم کنید.

در نهایت، او برنامه «رنگ تصادفی» را نشان می‌دهد که از کتابخانه random برای تولید یک رنگ منحصر به فرد برای هر یک از 24 LED در هر بار اجرای شِفر (کود) استفاده می‌کند و نمایشی پرجنب‌وجوش و چندرنگ ایجاد می‌کند.

فصل‌ها

  • [00:00] مقدمه‌ای بر LEDهای RGB و دوره ماشین هوشمند
  • [02:36] درک مدل رنگ RGB
  • [05:00] کنترل چراغ‌ها با توابع کتابخانه
  • [09:01] نحوه کنترل LEDهای جداگانه (0-23)
  • [13:08] ایجاد افکت نور راه‌رفتن
  • [15:32] تولید رنگ‌های تصادفی برای هر LED
بدون شِفر (کود) پیوست شده.

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

هیچ فایلی موجود نیست.