يتكون أي لون من ثلاثة ألوان: الأحمر والأخضر والأزرق ، باستخدام RGB LED بسيط يمكنك إنشاء أي لون. لكن الحد من RGB LED هو أنه يحتوي على ثلاثة مصابيح LED منفصلة بداخله ويتطلب ثلاثة دبابيس من أي متحكم لتشغيل RGB LED واحد. لذلك لا يمكن توصيل مئات من مصابيح LED بوحدة تحكم دقيقة واحدة.
للتغلب على هذه المشكلة ، قامت Adafruit بإنشاء NeoPixel LED Strip. يتطلب الأمر ثلاثة دبابيس فقط لتشغيل العديد من مصابيح RGB NeoPixel LED. اثنان من المسامير للطاقة والأرضي ودبوس واحد للبيانات In (DI). يتم استخدام دبوس Data IN لمعالجة والتحكم في مصابيح LED المختلفة في الشريط بألوانها وسطوعها وما إلى ذلك. ولكنها تتطلب متحكمًا دقيقًا لتشغيل NeoPixels. يتم استخدام Arduino بشكل شائع مع NeoPixel ، لذلك سنتعلم اليوم واجهة NeoPixel LEDs مع Arduino. يمكنك معرفة المزيد عن NeoPixels في AdaFruit.
هنا في هذا المشروع ، نتحكم في NeoPixel LED باستخدام Arduino و TFT LCD تعمل باللمس. لقد أنشأنا 7 أزرار تعمل باللمس بألوان مختلفة على شاشة TFT LCD مقاس 2.4 بوصة وعندما نضغط على زر لون معين على شاشة LCD ، يضيء شريط NeoPixel LED بنفس لون هذا الزر. استخدمنا هنا شريط NeoPixel Digital RGB LED المكون من 30 مصباحًا.
يمكن إضاءة NeoPixel RGB LED بأي لون وبالتالي يمكننا إضافة المزيد من الأزرار على شاشة LCD لإضاءة مؤشر LED بمزيد من الألوان عند النقر على تلك الأزرار. يمكن أيضًا إضافة تأثيرات وأنماط جميلة أخرى باستخدام الترميز. يمكنك بناء نظام ديكور كامل يتحكم فيه Arduino باستخدام NEO Pixel LEDs ويمكنك التحكم في هذا النظام عن طريق LCD بالقرب منك.
المكونات المطلوبة:
- Arduino Mega أو أي طراز Arduino آخر
- 2.4 بوصة TFT LCD Shield مع وحدة تحكم SPFD5408
- شريط NeoPixel RGB LED
- توصيل الأسلاك
- كابل USB أو محول 12 فولت 1 أمبير
توصيلات الدائرة:
ل ربط NeoPixels قطاع لاردوينو ميجا ببساطة توصيل اردوينو 5V دبوس دبوس 5V NeoPixel وميجا لGND إلى GND NeoPixel ومن ثم ربط دبوس NeoPixel DI (البيانات في) لدبوس الرقمية لا 36 من اردوينو ميجا. قم بتركيب شاشة TFT LCD Touch Shield على Arduino بعناية بحيث يقع GND of MEGA أسفل GND لشاشة LCD ويتصل دبوس 5V من Arduino بدبوس 5V من شاشة LCD.
احرص على عدم تبديل دبوس GND و 5V لشريط NeoPixel LED أثناء توصيله بـ Arduino ، وإلا فإنه سيتلف شريط NeoPixel LED. لاحظ أيضًا أننا استخدمنا Arduino Mega هنا ولكن يمكنك استخدام أي طراز آخر من Arduino.
اتصالات اردوينو بشريط نيوبكسل RGB LED:
اردوينو دبابيس |
دبابيس NeoPixel Strip |
5 فولت |
5 فولت |
GND |
GND |
رقم التعريف الشخصي الرقمي. 36 |
DI (في البيانات) |
شرح العمل:
إن عمل NeoPixel LED مع Arduino سهل للغاية. ما عليك سوى النقر على زر اللمس من أي لون على شاشة LCD حيث تريد توهج شريط NeoPixel LED. سيضيء مؤشر LED وفقًا لذلك اللون. تمت كتابة الكود بهذه الطريقة بحيث يمكنك تكرار هذه المهمة إلى ما لا نهاية دون الحاجة إلى إعادة تعيين Arduino Mega. يمكنك التحقق من الكود والفيديو التجريبي في نهاية هذه المقالة.
عند النقر على أي زر على شاشة LCD ، يتم إرسال البيانات إلى Arduino ويرسل Arduino مزيدًا من التعليمات إلى NeoPixel Strip للإضاءة وفقًا لذلك. على سبيل المثال ، يتوهج شريط NeoPixel LED باللون الأخضر عندما نضغط على الزر الأخضر على شاشة LCD ويتوهج شريط LED باللون الأحمر عندما نضغط على الزر الأحمر وما إلى ذلك.
شرح البرمجة:
لواجهة TFT LCD مع Arduino استخدمنا بعض المكتبات. تأتي جميع المكتبات في ملف rar واحد ويمكن تنزيلها من هذا الرابط. انقر فوق "استنساخ أو تنزيل" و "تنزيل ملف ZIP" وأضفه إلى مجلد مكتبة Arduino. هذه المكتبة ضرورية للتشغيل السليم لشاشة TFT LCD.
#تضمن
يجب عليك اختبار شاشة TFT LCD الخاصة بك عن طريق نسخ Arduino باستخدام رموز الأمثلة الواردة في المكتبة والتحقق مما إذا كانت الرموز تعمل بشكل صحيح. تحقق أولاً من اختبار الرسومات ، ثم قم بمعايرة الاختبار وأخيراً اختبار الطلاء. إذا وجدت أن جميع الميزات تعمل بشكل جيد ، فابدأ بالشفرة الواردة في هذا البرنامج التعليمي.
أيضًا من أجل حسن أداء شريط NeoPixel RGB LED ، ستحتاج إلى مكتبة أخرى يمكن تنزيلها من هنا.
#تضمن
كما هو موضح سابقًا ، يتم توصيل Digital Pin 36 من MEGA بدبوس DI لشريط NeoPixel LED كما هو موضح في الكود أدناه. كما أن عدد مصابيح LED في Strip هو 30 كما هو مكتوب في الكود:
#define PIN 36 #define NUM_LEDS 30
يتم الإشارة إلى ألوان عرض أزرار LCD بواسطة بعض الرموز. يمكنك تغيير هذه الرموز وفقًا لشاشة LCD الخاصة بك.
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
بعض المعلمات للأزرار مثل الحجم والموضع محددة في الكود:
uint16_t العرض = 0 ؛ ارتفاع uint16_t = 0 ؛ uint16_t x = 40 ؛ uint16_t y = الارتفاع - 20 ؛ uint16_t w = 75 ؛ uint16_t ح = 20 ؛
تستخدم المعلمة h لضبط حجم الزر على شاشة LCD. إذا قمت بإجراء 40 ، فسيتم مضاعفة حجم الزر. المعلمة y هي إحداثيات y لشاشات الكريستال السائل.
يتم الإشارة إلى أزرار اللمس بالأرقام كما هو موضح في الكود:
#define BUTTONS 9 #define BUTTON_Red 0 #define BUTTON_DarkRed 1 #define BUTTON_RED 2 #define BUTTON_DarkGreen 3 #define BUTTON_DeepRed 4 #define BUTTON_Blue 5 #define BUTTON_LightBlue 6 #define BUTTON_LightBlue 6 #
تُستخدم بعض الوظائف لإخراج اللون من NeoPixel مثل:
باطل EmitCyan () ؛ باطل EmitWhite () ؛ باطل EmitGreen () ؛ باطل EmitYellow () ؛ باطل EmitPink () ؛ باطل EmitBlack () ؛
إلى العثور على قيم RGB الرقمية إدخالها للون معين، يمكنك اتباع هذا الرابط. ما عليك سوى إدخال اللون الذي تريد أن يتوهج شريط NeoPixel الخاص بك ، والعثور على قيم RGB لذلك اللون ووضع الوظائف المذكورة أعلاه.
يتم استخدام وظيفة void initializeButtons () لإعطاء النص واللون للأزرار وأيضًا لوضعها في المكان المطلوب على شاشة LCD.
initializeButtons () باطلة {uint16_t x = 40 ؛ uint16_t y = الارتفاع - 20 ؛ uint16_t w = 75 ؛ uint16_t ح = 40 ؛ uint8_t spacing_x = 5………………..
تُستخدم وظيفة void showCalibration () لرسم الأزرار الموجودة على شاشة LCD.
void showCalibration () {tft.setCursor (40، 0) ؛ لـ (uint8_t i = 0 ؛ i <8 ؛ i ++) {أزرار.drawButton () ؛ }}
علاوة على ذلك ، يرد أدناه رمز Arduino الكامل لتوهج شريط NeoPixel LED باللون المطلوب. الكود طويل بعض الشيء ولكنه بسيط ، يمكنك فهم الكود بسهولة.