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

آموزش راه اندازی حلقه ال ای دی LED Neo Pixel Ring تولید نور رنگی

Arduino-LED-Neopixel-ring-Module-digispark
نوشته شده توسط پریسا پوربلورچیان

ال ای دی، ال ای دی و باز هم ال ای دی، همانطور که می‌دانید ال ای دی RGB از جذاب ترین و پرکاربردترین ال ای دی های موجود در بازار هستند. تکنولوژی ال ای دی از حدود دهه ۸۰ میلادی شروع شد و مداوم در حال پیشرفت بوده‌است. در نمای ساختمان، نورپردازی داخلی و ایجاد حس‌های زنده بودن اشیاء با نور و حقه‌های نورپردازی بسیار کاربرد دارد. ال ای دی Led RGB از قطعات نوع SMD ساخته شده است. کارهای جالب و جذابی با این مدل ال ای دی‌ها می‌توان انجام داد. در ادامه آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

حلقه ال ای دی نئوپیکسل LED Neo Pixel Ring RGB در یک دایره با قطر بیرونی ۶۶ میلی متر و قطر داخلی ۵۵ میلی متر قرار گرفته است. ال ای دی های RGB به صورت زنجیره ای، پین خروجی هر ال ای دی به پین ورودی دیگری اتصال یافته است. ال ای دی – RGB LED استفاده شده در این حلقه آدرس پذیر بوده و از نوع ال ای دی ۵۰۵۰ WS2812 می‌باشد. ولتاژ کاری حلقه ال ای دی LED Neo Pixel Ring RGB پنج – ۵ ولت DC است و برای راه اندازی کافیست از طریق PWM میکروکنترلر ال ای دی ها را آدرس پذیری کنید. حلقه ال ای دی LED Neo Pixel Ring RGB به ترتیب دارای ۴ پایه DI , 5V , GND , DO می‌باشد. در ادامه به بررسی اتصالات و راه اندازی ال ای دی – LED Ring RGB می‌پردازیم.

 

هدف آموزش حلقه ال ای دی

در این آموزش با استفاده از یک میکروسوییچ یک چرخه ال ای دی – LED Ring RGB با رنگ هایی متفاوت تولید خواهیم کرد. به اینصورت که با ۹ بار کلیک کردن میکروسوییچ – microswitch ، رنگ هایی متفاوت با خروجی متفاوت به ال ای دی – LED Ring RGB نسبت می‌دهیم. در ادامه به بررسی اتصالات و کدها خواهیم پرداخت.

 

وسایل مورد نیاز

  

اتصالات مدار حلقه ال ای دی

  • در ابتدا برای راحتی در اتصالات میتوانید به دلخواه کابل فلت نری به نری به حلقه ال ای دی LED Ring RGB لحیم کنید.
  • پایه DI حلقه ال ای دی LED Ring RGB را به پایه ۷ آردوینو اتصال دهید.
  • پایه GND حلقه ال ای دی LED Ring RGB را به پایه GND آردوینو اتصال دهید.
  • پایه ۵V حلقه ال ای دی LED Ring RGB را به پایه ۵ ولت آردوینو اتصال دهید.
  • میکروسوییچ ۴ پایه را بر روی شیلد آردوینو Arduino shield قرار دهید و سپس از یکی از پایه ها به پایه ۲ آردوینو و از پایه دیگر به GND آردوینو اتصال دهید.

 

فراخوانی کتابخانه آردوینو

در این آموزش برای راه اندازی حلقه ال ای دی نئوپیکسل نیاز به فراخوانی کتابخانه Adafruit neopixel خواهیم داشت. لینک دانلود کتابخانه Adafruit Neopixel را در صفحه محصول حلقه ال ای دی ۱۶ تایی LED Neo Pixel Ring RGB در قسمت دانلود قرار دارد. بر روی لینک کلیک کرده و کتابخانه Neopixel را دانلود کنید. چنانچه شیوه نصب کتابخانه در آردوینو را نمیدانید از پست نصب کنابخانه در نرم افزار آردوینو Arduino IDE استفاده کنید.

 

کد برنامه حلقه ال ای دی  LED NeoPixel

 

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

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

حال کد را در نرم افزار آردوینو از طریق کلید میانبری که قرار گرفته است، کپی کنید. سپس آپلود کنید. طبق اتصالات گفته شده در آموزش، حلقه ال ای دی LED Ring RGB و میکروسوییچ – microswitch را به آردوینو اتصال دهید. همانطور که در کدها توضیح داده شده است، ۹ حالت برای تغییر حالت و رنگ ال ای دی LED Ring RGB تعریف شده است. با فشردن کلید در هر بار رنگ ال ای دی LED Ring RGB تغییر خواهد کرد. در حالت اول ال ای دی LED Ring RGB به رنگ بنفش، در حالت دوم به رنگ آبی و حالت سوم صورتی و رنگ های دیگر که کد رنگ ها در متن کد نوشته شده است، تغییر خواهد کرد.

 

تعریف تعداد LED

در این آموزش از حلقه ال ای دی ۱۶ تایی LED Neo Pixel Ring RGB استفاده کرده ایم. با توجه به اینکه حلقه های ال ای دی ، ۸ تایی، ۱۲ تایی، ۱۶تایی، ۲۴ تایی برای این مدل وجود دارد، می‌توانید در کدهای برنامه تعداد ال ای دی های استفاده شده را تغییر دهید. در خط ۷ برنامه تعداد ال ای دی های استفاده شده در ماژول حلقه LED قابل تغییر است.

#define PIXEL_COUNT 16  // تعریف حلقه ال ای دی ۱۶ تایی

همانطور که در کد بالا مشخص است، با تغییر پارامتر ۱۶ می‌توانید تعداد را مشخص کنید و به ۸ یا ۱۲ و … تغییر دهید.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 

پروژه:

برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۸ دیدگاه

  • سلام
    خسته نباشید
    من یک جفت حلقه rgb از شما خریداری کردم اما اصلا نمیتونم روشن کنم همون خلقه ها رو هم به همه جا بردم کسی نتونست روشن کنه میخوام این دوتا حلقه رو روی ماشین نصب کنم راهنمایی کنید ممنون میشم

    • سلام
      در ابتدا پیشنهاد میشود که قبل از خرید از مشاوره رایگان استفاده کنید. با استفاده از همین آموزش می‌توانید حلقه ال ای دی را راه اندازی کنید و اگر راه اندازی برای شما مقدور نیست با پشتیبانی تماس بگیرید.

      • سلام
        من وسایل لازم برای برای راه اندازه حلقه رو از سایت شما امروز خریداری کردم
        و اداپتور میخواستم برای وصل کردن به باتری ماشین که روشن کنم اونم با وسایل های که امروز سفارش دادم میخواستم سفارش بدم
        اینو نمیشه مستقیم وصل باتری ماشین کرد لطفا راهنمایی کنید

        • سلام
          با توجه به اینکه ولتاژ کاری آردوینو ۵ تا ۱۲ ولت است، میتوانید برد را به برق ماشین هم وصل کنید. مطابق آموزش اتصالات را انجام دهید و سپس از طریق نرم افزار آردوینو، کد را در نرم افزار کپی و سپس کامپایل کنید. در صورت برخورد به مشکل از همین طریق اقدام نمایید تا مشکل را برطرف کنم.

    • سلام
      بله حتما تفاوتی نخواهد داشت. شیلد آردوینو هم دارای بردبورد است و پایه های gnd وvcc بیشتری در اختیار شما قرار میدهد.

  • سلام میشه لطفا راهنمایی کنین که مثلا من میخوام یک رنگ آبی (یک پیکسل آبی ) داخل رنگ قرمز حرکت کنه یعنی از شانزده عدد ال ای دی تنها یک عدد رنگش فرق کنه و بین اینها حرکت کنه.واگر بخواییم همهخاموش باشن و فقط سه عدد ال ای دی با رنگهای قرمز و آبی و سبز مثلا توشون حرکت کنه چیکار باید کرد کجایکد رو باید تغییر داد.اگه اشاره کنین بهش ممنون میشم.

    • سلام
      با توجه به اینکه تا به حال این مورد را تست نکرده ام، تغییرات این کد برای ایجاد یک پیکسل متفاوت کمی پیچیده است و نیاز به یک آموزش جداگانه خواهد داشت. تنها باید در قسمت void theaterChase و void startShow تغییرات را اعمال کنید.

  • سلام و خسته نباششین.ممنون از اطلاعات خوبتون.
    من یه سوال داشتم اونم اینه که ایا امکان همکاری برای تولید محصولات جدید نورپردازی برای ارائه به شهرداریها هستش.ممنون

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

  • با سلام و تشکر از شما
    بنده قصد دارم با استفاده از برد wemos d1 و این حلقه led ، یک وب سرور برای کنترل این led راه اندازی کنم ، سوال بنده این هست که چطور باید عملکردی که به led داده میشود را به صورت مداوم تکرار کنیم ؟
    منظور بنده این است که فرضا بنده با یک دستور از سمت وب سرور ، تابع rainbow را فعال میکنم ؛ در حالت معمول پس از پایان یافتن Rainbow ، led غیرفعال میشود ، چگونه باید کاری کرد که تا زمانی که دستور بعدی ( فرضا تغییر رنگ به زرد ) ارسال نشده است ، rainbow تکرار شود ؟
    با تشکر

    • سلام
      در این کد قسمت void startshow توسط تابع switch حالت های مختلف تعیین کردیم. هنگامی که حالت اول Case 1 انتخاب شود ،به عنوان مثال نور زرد فعال می‌شود و تا زمانیکه حالت دوم یعنی کلید دوم را انتخاب نکنیم، در حالت اول باقی خواهد ماند. در واقع محدودیت زمانی تعریف نشده است.

      • از پاسخگویی شما سپاسگزارم ،
        اما یک سوال دیگر ، به عنوان مثال بنده یک led و یک سوئیچ در مدار قرار میدهم و میخواهم از زمانی که کلید فشرده شد تا زمانی که مجددا فشرده شد led چشمک بزند
        کد زیر را نوشتم اما متاسفانه پس از شروع به چشمک زدن دیگر متوقف نمیشود:
        int btnpin = 7;
        int ledpin = 8;
        bool oldState = HIGH;
        void setup() {
        pinMode(btnpin, INPUT_PULLUP);
        }
        void loop() {
        bool newState = digitalRead(btnpin);
        if (newState == LOW && oldState == HIGH) {
        delay(20);
        newState = digitalRead(btnpin);
        while (newState == LOW) {
        ledblnk();
        }
        }
        oldState = newState;
        }
        void ledblnk() {
        digitalWrite(ledpin,HIGH);
        delay(100);
        digitalWrite(ledpin,LOW);
        delay(100);
        digitalWrite(ledpin,HIGH);
        delay(100);
        digitalWrite(ledpin,LOW);
        delay(100);
        }
        لطفا راهنمایی کنید ، تشکر

        • سلام مجدد
          کدهای متفرقه در این قسمت تحلیل نمی‌شود.ولی تنها ایرادی که این کد دارد حالت ها در قسمت Void setup باید تعریف شود و در این کد در قسمت LOOP تعریف شده است.
          در آموزش، آموزش کار با ماژول LED از کلید استفاده شده است، می‌توانید از کد این آموزش استفاده کنید.

  • با سلام و تبریک سال نو خدمت شما.
    یه سوال داشتم اونم اینه که برای برنامه دادن به ال ای دی پیکسلی (انگشتی ) از چه نرم افزاری استفاده میشه.واگر اونو دارین لینک دانلودشو میزارین

    • سلام
      از توجه شما ممنونم.
      منظور شما از ال ای دی انگشتی چیست؟ کامل توضیح دهید تا بتوانم راهنمایی کنم.

    • سلام
      در کد برنامه با توجه به اینکه از تابع کنترلی Switch و Case استفاده شده است، باید با توجه به نیاز خودتان آن را تعمیم و یا تنها به دو تابع کاهش دهید.
      به عنوان مثال با یک بار فشردن کلید و انتخاب رنگ آبی و قرمز، ال ای دی ها روشن خواهد شد. خط ۳۶ تابع StartShow را بررسی کنید و در صورت سوال از همین طریق اقدام نمایید.

  • سلام
    من یک استپر موتور سانیو دنکی به همراه درایور مربوطه دارم . با اردوینو یک کد ساده نوشتم .موتور دارای هلدینگ ترک هست اما حرکت نمی کنه می خواستم از تون کمک بگیرم تا مشکلم حل شه. متشکر

  • سلام
    یک تک ال ای دی رو زمانی که با ESP8266 راه اندازی میکنم مشکلی نداره ولی همون کد با ESP32 که اجرا میشه ال ای دی سبز صرف نظر از رنگی که تعیین کردم روشن میشه و کلا رنگ ها اشتباه نشون داده میشه.
    در حدی که وقتی روشنایی رو کم میکنم فقط سبز نشون داده میشه و بقیه رنگ ها خاموش میشن.
    با تغذیه ۵ ولت و پایه دیتای متفاوت هم امتحان کردم مشکل رفع نشد.

  • سلام وقتتون بخیر
    میشه به esp8266 -01 وصلش کنم و برق ۵ ولتم جدا تامین کنم و اینکه تنها لازمش برای کنترل led ها فقط یک پین pwm هست؟

    • با سلام
      تغذیه برد آردوینو از طریق پورت usb و جک آداپتوری ۷ تا ۱۲ ولت قابل تامین است. در خصوص تغییر رنگ با ریموت امکان پذیر نیست.

    • با سلام
      با توجه به اینکه این آموزش قدیمی است، در سری آموزش های جدید تغییرات اساسی تری صورت گرفته است. در صورتیکه در هر مرحله سوالی دارید از همین طریق اعلام کنید تا راهنمایی شود.

  • سلام
    من اگر بخوام تا قبل از اینکه دکمه رو فشار بدم و هنوز وارد نه حالت چشمک زن نشدم.ال ای دی بیاد بصورت رندم از بین افکت ها نمایش بده و وقتی دکمه رو فشار دادم واحد نمایش افکت ها بشه…یعنی عملا حالت اولیه به جای اینکه خاموش باشه ال ای دی،بیاد بصورت رندم همینجوری افکت هارو نمایش بده و بعد که دکمه رو زدیم حالا وارد برنامه اصلی بشه…
    تورو خدا کمکم کنید.

    • با سلام
      در این خصوص کافیست در حلقه برنامه خارج از تابع های شرطی دستورات تابع ال ای دی را فراخوانی کنید و بدون مشکل عمل خواهد کرد.
      به عنوان مثال در آموزش زیر بدون اجرای هیچ شرطی ال ای دی روشن شده و اجرا می‌شود.
      راه اندازی ال ای دی نئوپیکسل

  • سلام. من کلید فشاری ندارم
    کد رو اپلود کردم و ۵ ولت رو در تغذیه رینگ ال ای دی گرفتم
    واسه کار کردن برنامه با یه سیم پین ۲ رو که همون کلیده به گراند زدم و جدا کردم (به منزله فشار کلید)
    ولی در کمال تعجب هیچی نشد
    ال ای دی ای روشن نشد

    • سلام
      کاربر گرامی از اینکه نتیجه را اطلاع رسانی کردید، صمیمانه سپاسگزاریم.

  • سلام وقتتون بخیر
    من این بردهارو گرفتم ازتون
    اوکیم کردم
    فقط یک سوال
    چجوری میشه نوار ال ای دی رو وقتی که تو لوپه و هی داره تکرار میشه خاموش کرد؟ البته با پوش باتن

    • با سلام
      در این خصوص کافیست در یکی از سوییچ کیس ها از کد رنگ صفر استفاده کنید تا اجرا شود.

  • سلام منم همین وسایل رو خریدم ولی به جای حلقه ۱۶ تایی ۲۴ تاییشو خریدم نمی دونم چتور روشن کنم

    • با سلام
      در خط ۵ برنامه تعداد ال ای دی های مورد استفاده را میتوانید مشخص کنید.
      #define PIXEL_PIN 24

    • با سلام
      بله از برد بورد استفاده کنید. در کل انتخاب برد بورد و یا شیلد کاملا دلخواه است.

  • سلام پروژه خوبی بود و کاملا قابل کنترل خیلی جالب بود که کنترل کامل روی زمان و رنگ هر یک از ELD ها داریم
    یک سوال داشتم اینکه میشه با esp8266 کار کرد و تحت وب کنترل و تغییر رنگ بدهیم
    مثلا رنگ همه چراغ ها را کم یا زیاد با تغییر داد

  • سلام میشه ازین برنامه ای که نوشتین برای ماژول LED RGB حلقه‌ای ۳۲ تایی WS2812‏ استفاده کرد