كيفية توصيل شريط LED القابل للعنونة WS2812B بأردوينو
يستمر تطوير تقنية الإضاءة القائمة على مصابيح LED بسرعة. بالأمس فقط ، بدت شرائط RGB التي يتم التحكم فيها بواسطة وحدة التحكم ، والتي يمكن ضبط سطوعها ولونها باستخدام جهاز تحكم عن بعد ، وكأنها معجزة. اليوم ، ظهرت مصابيح ذات ميزات أكثر في السوق.
شريط LED يعتمد على WS2812B
الفرق بين شريط LED القابل للتوجيه والشريط القياسي RGB الشيء هو يتم ضبط نسبة السطوع واللون لكل عنصر على حدة. يتيح لك ذلك الحصول على تأثيرات الإضاءة التي يتعذر الوصول إليها بشكل أساسي لأنواع أخرى من أجهزة الإضاءة. يتم التحكم في توهج شريط LED القابل للعنونة بطريقة معروفة - باستخدام تعديل عرض النبضة. تتمثل إحدى ميزات النظام في تزويد كل LED بجهاز تحكم PWM الخاص به. رقاقة WS2812B عبارة عن صمام ثنائي باعث للضوء ثلاثي الألوان ودائرة تحكم مجتمعة في عبوة واحدة.

يتم دمج العناصر في شريط طاقة بالتوازي ، ويتم التحكم فيها عبر ناقل تسلسلي - يتم توصيل خرج العنصر الأول بمدخل التحكم في العنصر الثاني ، إلخ. في معظم الحالات ، يتم بناء الحافلات التسلسلية على سطرين ، أحدهما ينقل الومضات (نبضات الساعة) ، والآخر - البيانات.

يتكون ناقل التحكم الخاص بشريحة WS2812B من سطر واحد - يتم نقل البيانات من خلاله. يتم ترميز البيانات كنبضات ذات تردد ثابت ، ولكن مع دورات عمل مختلفة. نبضة واحدة - بت واحد. مدة كل بتة هي 1.25 s ، وتتكون البتة الصفرية من سوية عالية مدتها 0.4 s ومستوى منخفض 0.85 µs. تبدو الوحدة كمستوى مرتفع لـ 0.8 µs ومستوى منخفض لـ 0.45 s. يتم إرسال اندفاع 24 بت (3 بايت) إلى كل مؤشر LED ، متبوعًا بإيقاف مؤقت منخفض المستوى لمدة 50 ميكرو ثانية. هذا يعني أنه سيتم نقل البيانات لمصباح LED التالي ، وما إلى ذلك لجميع عناصر السلسلة. ينتهي نقل البيانات بإيقاف مؤقت قدره 100 ميكروثانية. يشير هذا إلى أن دورة برمجة الشريط قد اكتملت وأنه يمكن إرسال المجموعة التالية من حزم البيانات.

مثل هذا البروتوكول يجعل من الممكن الحصول على خط واحد لنقل البيانات ، لكنه يتطلب الدقة في الحفاظ على الفواصل الزمنية. لا يسمح بالتناقض بأكثر من 150 نانوثانية. بالإضافة إلى ذلك ، فإن مناعة الضوضاء لمثل هذه الحافلة منخفضة جدًا. أي تدخل بسعة كافية يمكن أن ينظر إليه المتحكم على أنه بيانات. هذا يفرض قيودًا على طول الموصلات من دائرة التحكم. من ناحية أخرى ، هذا يجعل الأمر ممكنًا فحص صحة الشريط بدون أجهزة إضافية.إذا قمت بتطبيق الطاقة على المصباح ولمست لوحة التلامس الخاصة بناقل التحكم بإصبعك ، فقد تضيء بعض مصابيح LED وتنطفئ بشكل عشوائي.
مواصفات عناصر WS2812B
لإنشاء أنظمة إضاءة تعتمد على شريط العنوان ، تحتاج إلى معرفة المعلمات المهمة لعناصر انبعاث الضوء.
| أبعاد الصمام | 5x5 ملم |
| تردد تعديل PWM | 400 هرتز |
| الاستهلاك الحالي بأقصى سطوع | 60 مللي أمبير لكل خلية |
| مصدر التيار | 5 فولت |
اردوينو و WS2812B
تتيح لك منصة Arduino ، المشهورة في العالم ، إنشاء رسومات (برامج) لإدارة أشرطة العناوين. قدرات النظام واسعة بما فيه الكفاية ، ولكن إذا لم تعد كافية على مستوى ما ، فستكون المهارات المكتسبة كافية للتبديل دون ألم إلى C ++ أو حتى إلى المجمع. على الرغم من أن المعرفة الأولية أسهل في الحصول على Arduino.
توصيل شريط WS2812B بـ Arduino Uno (Nano)
في المرحلة الأولى ، تكفي لوحات Arduino Uno أو Arduino Nano البسيطة. في المستقبل ، يمكن استخدام لوحات أكثر تعقيدًا لبناء أنظمة أكثر تعقيدًا. عند توصيل شريط LED القابل للعنونة فعليًا بلوحة Arduino ، يجب مراعاة عدة شروط:
- بسبب انخفاض مناعة الضوضاء ، يجب أن تكون موصلات خط البيانات أقصر ما يمكن (يجب أن تحاول جعلها في حدود 10 سم) ؛
- تحتاج إلى توصيل موصل البيانات بالإخراج الرقمي المجاني للوحة Arduino - سيتم بعد ذلك تحديده برمجيًا ؛
- نظرًا لارتفاع استهلاك الطاقة ، ليس من الضروري تشغيل الشريط من اللوحة - يتم توفير مصادر طاقة منفصلة لهذا الغرض.
يجب توصيل سلك الطاقة المشترك للمصباح و Arduino.

أساسيات التحكم في البرنامج WS2812B
لقد سبق ذكره أنه من أجل التحكم في الدوائر الدقيقة WS2812B ، من الضروري توليد نبضات بطول معين ، مع الحفاظ على دقة عالية. توجد أوامر في لغة الأردوينو لتكوين نبضات قصيرة تأخير و ميكرو. المشكلة هي أن دقة هذه الأوامر 4 ميكروثانية. أي أنه لن ينجح في تشكيل تأخيرات زمنية بدقة معينة. من الضروري التبديل إلى أدوات C ++ أو Assembler. ويمكنك تنظيم التحكم في شريط LED القابل للتوجيه من خلال Arduino باستخدام مكتبات تم إنشاؤها خصيصًا لهذا الغرض. يمكنك بدء التعارف مع برنامج Blink الذي يجعل العناصر الباعثة للضوء تومض.
قاد بسرعة
هذه المكتبة عالمية. بالإضافة إلى شريط العنوان ، فإنه يدعم مجموعة متنوعة من الأجهزة ، بما في ذلك الأشرطة التي يتم التحكم فيها بواسطة واجهة SPI. لديها احتمالات واسعة.
أولاً ، يجب تضمين المكتبة. يتم ذلك قبل كتلة الإعداد ، ويبدو الخط كالتالي:
# تضمين <FastLED.h>
الخطوة التالية هي إنشاء مصفوفة لتخزين ألوان كل الصمام الثنائي الباعث للضوء. سيكون لها شريط الاسم والبعد 15 - بعدد العناصر (من الأفضل تعيين ثابت لهذه المعلمة).
شريط CRGB [15]
في قالب الإعداد ، تحتاج إلى تحديد الشريط الذي سيعمل معه الرسم التخطيطي:
الإعداد باطل() {
FastLED.addLeds <WS2812B، 7، RGB> (شريط ، 15) ؛
intg.
}
تحدد معلمة RGB ترتيب تسلسل الألوان ، 15 يعني عدد مصابيح LED ، 7 هو رقم الإخراج المخصص للتحكم (من الأفضل أيضًا تعيين ثابت للمعامل الأخير).
تبدأ كتلة الحلقة بحلقة تكتب بالتتابع لكل قسم من المصفوفة أحمر (توهج أحمر):
لـ (g = 0 ؛ g <15 ؛ g ++)
{قطاع [g] = CRGB :: أحمر ؛}
بعد ذلك ، يتم إرسال المصفوفة المشكلة إلى المصباح:
FastLED.show () ،
تأخير 1000 مللي ثانية (ثانية):
تأخير (1000) ؛
ثم يمكنك إيقاف تشغيل جميع العناصر بنفس الطريقة عن طريق كتابة اللون الأسود فيها.
لـ (int g = 0 ؛ g <15 ؛ g ++)
{قطاع [g] = CRGB :: أسود ؛}
FastLED.show () ،
تأخير (1000) ؛

بعد تجميع الرسم وتحميله ، سيومض الشريط لمدة ثانيتين. إذا كنت بحاجة إلى إدارة كل مكون من مكونات الألوان على حدة ، فعندئذٍ بدلاً من الخط {قطاع [g] = CRGB :: أحمر ؛} يتم استخدام عدة أسطر:
{
شريط [g] .r = 100 ؛ // اضبط مستوى توهج العنصر الأحمر
شريط [g] .g = 11 ؛ // نفس اللون الأخضر
الشريط [g] .b = 250 ؛ // نفس اللون الأزرق
}
NeoPixel
تعمل هذه المكتبة فقط مع حلقات NeoPixel Ring LED ، ولكنها أقل كثافة في الموارد وتحتوي فقط على الأساسيات. في لغة Arduino ، يبدو البرنامج كما يلي:
# تضمين <Adafruit_NeoPixel.h>
كما في الحالة السابقة ، المكتبة متصلة ، ويتم الإعلان عن الكائن lenta:
Adafruit_NeoPixel lenta = Adafruit_NeoPixel (15 ، 6) ؛ // حيث 15 هو عدد العناصر و 6 هو الناتج المعين
في قالب الإعداد ، تتم تهيئة الشريط:
الإعداد باطل() {
lenta.begin ()
}
في كتلة الحلقة ، يتم تمييز جميع العناصر باللون الأحمر ، ويمرر المتغير إلى الخلاصة ، ويتم إنشاء تأخير لمدة ثانية واحدة:
لـ (int y = 0 ؛ y <15 ؛ y ++) // 15- عدد العناصر في المصباح
{lenta.setPixelColor (y، lenta.Color (255،0،0))} ؛
شريط عرض () ؛
تأخير (1000) ؛
يتوقف التوهج بسجل أسود:
لـ (int y = 0 ؛ y <15 ؛ y ++)
{lenta.setPixelColor (y، lenta.Color (0،0،0))} ؛
شريط عرض () ؛
تأخير (1000) ؛

فيديو تعليمي: نماذج من المؤثرات المرئية باستخدام شرائط العناوين.
بمجرد أن تتعلم كيفية وميض مصابيح LED ، يمكنك الاستمرار في تعلم كيفية إنشاء تأثيرات لونية ، بما في ذلك قوس قزح الشائع و Aurora Borealis مع انتقالات سلسة. توفر مصابيح LED القابلة للعنونة WS2812B و Arduino إمكانيات غير محدودة تقريبًا لهذا الغرض.
