نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
Avatar

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

با سلام خدمت دوستان عزیز امروز میخوایم طریقه کنترل این ال ای دیا رو به وسیله آردوینو آموزش بدیم که یه بحث بسیار دوست داشتنی و جذابه پس با ما همراه باشید.

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

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

خب یه توضیح مختصر بدم که این ال ای دیا چیه و فرقش با ال ای دیای rgb  معمولی چیه؟
خدمت دوستان عزیزم باید بگم که شما بوسیله یه سیم دیتا میتونید چند صد تا از این نوع ال ای دی رو به آردوینو وصل کنید؛ خب این چه کاریه حالا، همون rgb معمولیا هم میشد هزارتاشو با سه تا سیم دیتا به میکرو وصل حالا چه سه تا سیم چه یکی چه فرقی داره؟؟؟
Rgb معمولیا درسته که میشه هزارتاشو به میکرو وصل کرد ولی رنگ و میزان روشنایی همه ال ای دی ها یکسانه یعنی همش مثلا قرمزه، نمیشه نصفش یه رنگ باشه نصف دیگش یه رنگ دیگه چه برسه به این که رنگ تک تک ال ای دیا رو بشه تغییر داد اما چون ال ای دیای سری ws28xx آدرس پذیرند با یه تک سیم (بجز سیم تغذیه) میشه رنگ و brightness تک تک ال ای دیا رو تغییر داد.
پایین ترین ورژن ws2801 بود که دو تا سیم دیتا می خواست بعدیش ws2811 و پس از اون ws2812 و ws2812b اومدن که واسه کد نویسیشون خیلی فرقی با هم ندارن و ما در اینجا ws2812 رو به عنوان مرجع آموزش میدیم بقیه رو هم توی بخش کد نویسی میگم چیکار کنید که برنامه نویسی ws2812 جور در بیاد.

پروژه آردوینو

خب دیگه بریم واسه توضیح توابع کتابخونه موردنظر، واسه برنامه نویسی این ال ای دیا می تونیم از دو تا کتابخونه استفاده کنیم یکی Adafruit و دیگری fastLed که در اینجا قراره ما با کتابخونه اولی یعنی Adafruit کار کنیم و اون یکی هم خیلی فرق نداره اینو بفهمید انگار اونم بلدین البته یکیشو هم یاد بگیرید کافیه.
معرفی کتابخانه :

ساختن یک شی از این کتابخانه :

نوع پیکسل میتونه شامل موارد زیر باشه :

NEO_KHZ800

NEO_KHZ400

NEO_GRB

NEO_RGB

پارامتر اولی و سومی بیشتر واسه ws2812 هست، دومی واسه ws2811 و ورژنهای قدیمی تر هست چهارمیم واسه ورژنهای قدیمی هست
حالا مثال میزنم که بیشتر متوجه بشید ولی نگران این موضوع نباشید که پارامترهای ال ای دیاتونو نمیدونید اینا رو تغییر بدید ببینید کدومش روی ال ای دی شما جواب میده.
مثال :

توی این مثال همونطور که میبینید یعنی ما میخوایم 60 تا ال ای دی وصل کنیم به پایه 6 و نوع ال ای دی هم مشخص کردیم.

begin
این دستور برای آماده سازی نوار ال ای دیه و بصورت زیر اعمال میشه:

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

n شماره ال ای دیه در اینجا به این نکته توجه کنید که شماره ال ای دی ها از شماره صفر شروع میشن بوسیله rgb هم که میتونیم رنگ دلخواهمون رو بسازیم(با این دستور ال ای دی روشن نمیشه و فقط آماده میشه)
مثال :

میبینیم که با دستور بالا ال ای دی چهارم آماده میشه برای روشن شدن با رنگ زرد.
شکل دومی که میتونیم این تابع رو فراخوانی کنیم به شکل زیره :

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

Color
این تابع به شکل زیر فراخوانی میشه :

سه تا مقداره رنگ رو بهش میدیم و یه متغیر 32 بیتی که رنگ رو در بر داره تحویل می گیریم.

show
حالا که پایه رو آماده کردیم با این دستور ال ای دی های موردنظر رو روشن می کنیم.

getPixelColor
برای فراخوانی از فرم زیر استفاده می کنیم:

این دستور رنگ ال ای دی شماره n رو بر میگردونه.

numPixels

این دستور تعداد ال ای دیایی که توی ساختن شی بهش دادیم رو بهم بر میگردونه یعنی طبق مثال بالا عدد 60 رو برمی گردونه.

clear
این دستور همه ال ای دی ها رو خاموش می کند.

setBrightness
نکته ای که این دستور داره اینه که شما این تابع رو فقط توی setup برنامه می تونید استفاده کنید و برای یک بار میزان روشنایی رو مشخص کنید که این مقدار رو از بین صفر تا 255 میتونید انتخاب کنید.
مثال:

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

getBrighness
این دستور مقداری که با دستور بالا اعمال کردیم رو بر میگردونه:

setPin
با فراخوانی این تابع میتونیم پایه ای رو که در هنگام ساخت شی در نظر گرفتیم رو عوض کنیم.
مثال :

بدین صورت پایه موردنظر از 6 به 7 تغییر خواهد کرد.

updateLength
بوسیله این دستور میتونیم در هر جای برنامه تعداد ال ای دی ها رو که توی ساخت شی معرفی کردیمو تغییر بدیم.

با این مثال تعداد ال ای دی ها که 60 بود رو به 30 تغییر دادیم.

updateType
این تابع هم همونطوری که از اسمش پیداس واسه تغییر دادن نوع پیکسل ها هست که توی هر جای برنامه می تونیم تغییرش بدیم.
مثال :

و در آخرم یه مثال خوب برای استفاده از این ال ای دی که تعداد 8 ال ای دی رو بصورت بارانی روشن میکنه.

اینم از فیلم عملکرد مثال که به خاطر کیفیت پایینش واقعا ببخشید unknw
http://www.aparat.com/v/qgB2c

اینم از کتابخونه استفاده شده

انشاالله اگه عمری باقی باشه یه پروژه ارتباط ws2812 با سی شارپ هم قرار میدم که بشه توی برنامه همه افکت ها رو تنظیم کرد و به آردوینو فرستاد.
این مطلبم اینجا به پایان رسید خدا کنه به درد دوستان خورده باشه و ما رو هم دعا کنن.

گروه پرسش و پاسخ الکترونیکی در سروش
تعداد مطالب : 6 تا
Avatar تازه کارشناسیمو توی رشته الکترونیک تموم کردم علاقه مند به برنامه نویسی حالا هرچی میخواد باشه (ولی آردوینو یه چیزه دیگس :دی) و علاقه بسیاااار زیاد به پروژه های نورپردازی.
ارسال دیدگاه
29

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    طبسی

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

  2. Avatar

    مهمان

    پوریا

    سلام
    من از همین ال ای دی هایی که باهاش فیلم گرفتید دارم
    تعدادش 24 تاست
    مشکلم این unknw جاست که میخوام 3 تا دسته الی ای دی با هم بچرخن
    راهنمایی می کنید؟

  3. Avatar

    مهمان

    جواد

    سلام یک برنامه کد ویژن میخواستم با tiny13درمورد ال ای دی rgbکه رنگهای مختلف را بافاصله زمانی نشان دهد با تشکر hi

  4. Avatar

    مهمان

    مصطفی

    سلام خسته نباشید
    میخواستم بدونم برد اردوینو خودش تو چه دمایی میتونه کارکنه
    بعد یه سوال دیگه داشتم
    من میخواستم دمای یه محیط رو به صورت دائم چک کنم این موضوع به بر اسیب نمیزنه
    اگه میزنه باید چه کاری انجام بدم
    ((تشکر))

  5. Avatar

    مهمان

    Hamid

    سلام
    مطلبتون خیلی عالیه
    من یک متر strip led رو با یه آدابتور ۵v 1A و برد UNO روشن کردم
    وقتی پاور برد UNO رو از کامپیوتر میگیرم همه چیز درسته ولی وقتی برد و strip led رو از آدابتور میگیرم کلا قاطی میکنه shock
    کاری میشه کرد؟؟؟

    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام – به شماتیک برد مراجعه کنید ببینید ورودی تغذیه آردوینو چند ولته – شاید ولتاژ زیاد یا کم میدید

      • Avatar

        مهمان

        Hamid

        سلام و عرض ادب
        برد آردوینو UNO رو با همون آدابتور (۵v 1A) با ماژول های دیگه تست کردم مشکلی نداره
        فقط وقتی با Strip LED تست می گیرم قاطی میکنه
        آدابتور رو هم عوض کردم باز مشکل داره

  6. Avatar

    مهمان

    کریمی

    سلام مهندس
    بنده ۵متر ال ای دی ws2812 و آردوینو uno خریداری کردم
    الان میخوام ال ای دی به آردوینو وصل کنم و افکتهای مختلفی به ۵متر بدم
    لطفا بندرو راهنمایی میکنید
    اینکه چطور بفهمم چ مقاومت یا خازن و جریان و ولتاژی نیاز داره ؟؟؟
    کلا چه چیزهایی برای راه انداز ws2812 و آردوینو نیازه ؟؟ راستی ی ماژول وای فای هم گرفتم ک اگر اینهم بشه ب مدار اضافه کرد و با گوشی کنترل کرد که عالی میشه
    بازم ممنون میدونم طولانی و خارج صبر و حوصله شد این درخواستم :-)))))))

    • Avatar

      نویسنده این مطلب

      masoud zahedi

      سلام اگه بصورت متری خریدین احتمالا خودش باید مقاومت و خازن داشته باشه روش(چک کنید) واسه تغذیشم از یه آداپتور ۵ ولت ۲ آمپر استفاده کنید
      واسه ماژول وایفای هم کلا میشه یه پروژه که نمیشه بصورت جزئی راجع بش صحبت کرد

      • Avatar

        مهمان

        کریمی

        مرسی از جوابت
        ولی مهندس جان بنده با پاور pc و سیم ۵v پاور زدم نوار ال ای دی کامل سوخت
        ۱۴۵تومن ضرر کردم :-((((
        الان از دوباره سفارش دادم ک برسه
        اگر امکان داره به صورت واضح بفرمائید که کسانیم ک مبتدی هستن کارشون را بیوفته
        اگر به ایمیلم بفرستید ممنون میشم smile

        • Avatar

          نویسنده این مطلب

          masoud zahedi

          پاور کامپیوتر که پاور نیس ماشالاااا همش نویزه
          بعدشم شما همشو وصل نکن اول از ۱۰ تاش شروع کن وقتی یاد گرفتی بعد بقیشو هم وصل کن
          یه خبر خوب هم بهت بدم همه ال ای دیا نسوخته (به احتمال زیاد) وقتی ال ای دی اولی بسوزه بقیشم کار نمیکنه دیگه. شما از ال ای دی های دوم سومی تست بگیر ایشالا سالمه

  7. Avatar

    مهمان

    darklight

    سلام واقعا ممنون اجرت با امام حسین
    بنده کلی میون سایتهای ایرانی گشتم ک یک آموزش زیبا و کاملا روان پیدا کنم گشتم نبود تا اینکخ با سایت شما آشنا شدم
    کاشکی بیشتر به پروژه های ال ای دی و آردوینو تمرکز کنید هم قیمت میکروها کم است و هم خیلی سرگرم کننده هست
    پایدار باشی

    • Avatar

      نویسنده این مطلب

      masoud zahedi

      سلام ممنون از ابراز لطفتون
      شما ایده بدید تا ما بسازیم good

  8. Avatar

    مهمان

    محمدجواد

    سلام ممنون از آموزشات ، پروتئوس ws28.. ها رو نداره چجوری شبیه سازی کنم

    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام
      تو نت بگرد ببین کتابخونه پروتئوسش رو پیدا میکنی یا نه – ولی به نظر من بیخال پروتئوس شو good

      • Avatar

        مهمان

        حمید

        سلام و سپاس از این زحمت که میکشید. قبلا هم از شما یه سوالی پرسیدم ولی هنوز جوابش رو ندادین.
        خاستم ببینم یه پروژه از کنترل این ال ای دی ها رو میشه با میکرو بذارید که چطوری باید کنترلش کنیم. مثلا با Atmega8
        یا در مورد توابع کتابخونه ای که میشه تو کد ویژن برا کنترل این ال ای دی ها استفاده کرد؟
        یه پروژه کوچیک بذارید باقیش رو خودم حل میکنم. ممنون میشم. منتظرم. خدا خیرت بده

        • مهدی دمیرچیلو

          مدیر سایت

          مهدی دمیرچیلو

          سلام.کتابخونه Adafruit_NeoPixel رو باید تبدیل کنی به کامپایلر مد نظرت که من حصوله این کارو ندارم – موفق باشید.

  9. Avatar

    مهمان

    فرهادی

    سلام لطفا کتابخانه ال ای دی 5050rgb رو برای التیوم بذارید

  10. Avatar

    مهمان

    Mehrad

    دمتون بخاری

  11. Avatar

    مهمان

    علی

    سلام. ممنون از آموزشتون.
    کتابخانه رو نصب کردم کدها رو آپلود کردم برق 12 ولت و DI به پین6
    اما روشن نشد.
    لطفا راهنماییم کنید

    • Avatar

      نویسنده این مطلب

      masoud zahedi

      من برنامه رو run کردم مشکلی نداشت شما اول یک پروزه ساده بریز روی آردوینتون (مثل blink) بعد اینو آپلود کن ببین درست میشه؟
      کامپایلرتون ورژن چنده؟

      • مهدی دمرچیلو

        مدیر سایت

        مهدی دمرچیلو

        آقا تو مدارات آنالوگ واردی؟
        من چند تا برد UNO ام مشکل دارن، نمیدونم کدوم قطعه سوخته – سررشته ای داری تو این موارد؟

        • Avatar

          نویسنده این مطلب

          masoud zahedi

          توی اکثر مواقع در همچین حالتایی بوت لودر آردوینو پریده بهتره اول بوت لودر رو چک کنید بعد برید سخت افزار

          • مهدی دمرچیلو

            مدیر سایت

            مهدی دمرچیلو

            بوت لودر کدوم میروک؟ اون DIP هه یا SMD هه؟
            بوت لودر برا چی باید بپره؟ اصلا چی میشه که این طوری میشه؟

          • Avatar

            نویسنده این مطلب

            masoud zahedi

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

        • Avatar

          مهمان

          سامان

          سلام اقا مهدو چطور میتونم باشما تماس برقرار کنم میخواستم صحبت کنم

  12. Avatar

    مهمان

    مهدی

    خدا قوت. عالی بود.

  13. مهدی دمرچیلو

    مدیر سایت

    مهدی دمرچیلو

    آقا مسعود مطلب رو نخوندم هنوز ولی فیلم رو که دیدم به نظر میرسه جالب باشه. smile

    • Avatar

      نویسنده این مطلب

      masoud zahedi

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