مستشعر ألوان بسيط DIY من Magicbit: 5 خطوات
مستشعر ألوان بسيط DIY من Magicbit: 5 خطوات

فيديو: مستشعر ألوان بسيط DIY من Magicbit: 5 خطوات

فيديو: مستشعر ألوان بسيط DIY من Magicbit: 5 خطوات
فيديو: إصنع مستشعر للظلام لتشغيل أي شيء أوتوماتيكيا في وجود الظلام 2025, كانون الثاني
Anonim
Image
Image

في هذا البرنامج التعليمي سوف نتعرف على كيفية صنع مستشعر ألوان بسيط باستخدام Magicbit مع Arduino.

اللوازم

  • ماجيكبيت
  • كابل USB-A إلى Micro-USB

الخطوة 1: القصة

إعداد الأجهزة
إعداد الأجهزة

مرحبًا يا شباب ، في بعض الأحيان يتعين عليك استخدام مستشعرات الألوان لبعض الأغراض. لكن قد لا تعرف كيف تعمل. لذلك في هذا البرنامج التعليمي سوف تتعلم كيفية صنع مستشعر ألوان بسيط DIY باستخدام Magicbit مع Arduino. لنبدأ.

الخطوة الثانية: النظرية والمنهجية

نتوقع أن نعلمك في هذا المشروع كيفية بناء مستشعر ألوان يمكنه اكتشاف الألوان الأحمر والأخضر والأزرق. هذا مثال أساسي للغاية. فكيف للقيام بذلك. لهذا الغرض ، نستخدم وحدة RGB من Magicbit و LDR يحمل في ثناياه عوامل. بادئ ذي بدء ، عليك أن تتعلم بعض النظرية. هذا هو حول كمية انعكاس الضوء. الآن أطرح سؤالاً منك. ما هو السطح الملون الذي يعكس ضوء اللون الأحمر؟ وأيضًا الأسطح التي تعكس في الغالب الأضواء الخضراء والزرقاء. فكر قليلا. لكن الجواب بسيط. يعكس السطح الملون باللون الأحمر في الغالب ضوء اللون الأحمر. كما ستعكس الأسطح الخضراء والزرقاء الضوء الأخضر والأزرق. لذلك في هذا المشروع نستخدم تلك النظرية. للتعرف على اللون ، نصدر أضواء حمراء وخضراء وزرقاء واحدة تلو الأخرى. في كل مرة نقيس مقدار الانعكاس باستخدام قيمة LDR ، إذا كان بعض الضوء يعطي انعكاسًا أكبر من مصباحين آخرين ، فيجب أن ينعكس هذا السطح في الغالب على السطح الملون.

الخطوة 3: إعداد الجهاز

هذا بسيط جدا. قم بتوصيل وحدة RGB في المنفذ الأيمن العلوي من Magicbit. تحتوي هذه الوحدة على WS2812B Neopixel LED. هذا الصمام له 4 دبابيس. اثنان للطاقة واثنان للبيانات داخل وخارج. نظرًا لأننا نستخدم مؤشرًا واحدًا ، فإننا نحتاج فقط إلى دبابيس طاقة وبيانات في الدبوس. إذا لم يكن لديك هذه الوحدة ، يمكنك شراء وحدة Neopixel. إذا اشتريت هذا النوع من الوحدات ، فيجب عليك توصيل دبابيس الطاقة والبيانات في دبوس إلى Magicbit. هذا سهل جدا. قم بتوصيل VCC و GND الخاص بـ Magicbit بدبابيس الطاقة لوحدة RGB ودبوس D33 بدبوس البيانات.

الخطوة 4: إعداد البرنامج

الجزء الأكبر من البرمجة. نحن نستخدم Arduino IDE لبرمجة Magicbit الخاص بنا. في الكود نستخدم مكتبتين. إنها مكتبة Adafruit Neopixel للتحكم في Neopixel LED ومكتبة Adafruit OLED للتعامل مع OLED. في الإعداد نقوم بتكوين مدخلاتنا ومخرجاتنا. قم أيضًا بتكوين شاشة OLED المدمجة في Magicbit. في الحلقة ، نتحقق من الضغط على زر الضغط الأيسر أو عدم الضغط على Magicbit. إذا تم الضغط عليه ، تكون إشارة الإدخال 0. لأنه تم سحبها بالفعل بواسطة اللوحة. إذا تم الضغط عليه ، فإننا نقوم بفحص اللون. إذا لم يكن الأمر كذلك ، فستعرض الشاشة عبارة "بلا لون". عند الضغط على الزر ، قم تلقائيًا بتشغيل الأضواء الحمراء والخضراء والزرقاء واحداً تلو الآخر وتخزين مقدار انعكاس الألوان في ثلاثة متغيرات. بعد ذلك ، قمنا بمقارنة هذه القيم وتحديد اللون الأقصى للقيمة لعرضه كلون الإخراج.

لذا ، قم بتوصيل كبل USB الصغير بـ Magicbit وحدد نوع اللوحة ومنافذ com بشكل صحيح. الآن قم بتحميل الكود. ثم حان الوقت لاختبار المستشعر الخاص بنا. لاختبار ذلك ، احتفظ بالورق ذي السطح الأحمر أو الأخضر أو الأزرق أو الورقة أعلى وحدة LDR و RGB واضغط على زر الضغط الأيسر. ثم ستعرض شاشة OLED ما هو لون السطح. إذا كان هذا خاطئًا ، فالسبب هو أن بعض الألوان لها شدة إضاءة عالية. كمثال في كل سطح أخضر ، يكون الناتج أحمر ، ثم يتعين عليك تقليل سطوع الضوء الأحمر من بعض المقدار. لأن الضوء الأحمر له سطوع عالي جدًا في هذه الحالة. لذلك لديها انعكاس كبير. إذا كنت لا تعرف كيفية التحكم في السطوع ، فارجع إلى البرنامج التعليمي في الرابط أدناه.

magicbit-arduino.readthedocs.io/en/latest/

في هذا الرابط ، يمكنك العثور على كيفية التحكم في وحدة RGB هذه من Magicbit. وأيضًا يمكنك العثور على كيفية العمل مع LDR وزر الضغط باستخدام Magicbit. اقرأ هذا المستند وادرس المزيد حول كيفية تحسين مستشعر الألوان. لأن هذا مثال أساسي للغاية حول كيفية عمل مستشعرات الألوان. تعمل معظم أنواع مستشعرات الألوان بهذه الطريقة. لذا حاول تحسين ذلك عن طريق إزالة ضوضاء الإضاءة المحيطة والضوضاء الأخرى.

الخطوة 5: كود اردوينو لمستشعر الألوان

#يشمل

#define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT ، LED_PIN ، NEO_RGB + NEO_KHZ800) ؛ # تضمين # تضمين # تضمين # تعريف OLED_RESET 4 عرض Adafruit_SSD1306 (128 ، 64) ؛ #define LDR 36 # زر تعريف 35 int R_value ، G_value ، B_value ؛ إعداد باطل () {LED.begin () ؛ LED.show () ؛ pinMode (LDR ، المدخلات) ؛ pinMode (زر ، الإدخال) ؛ display.begin (SSD1306_SWITCHCAPVCC ، 0x3C) ؛ display.display () ، تأخير (1000) ؛ display.clearDisplay () ، Serial.begin (9600) ؛ } حلقة فارغة () {if (digitalRead (Button) == 0) {// إذا تم الضغط على الزر LED.setPixelColor (0، LED. Color (0، 50، 0))؛ // في redcolour LED.show () ؛ تأخير (100) ؛ R_value = analogRead (LDR) ؛ // احصل على أحمر جبل LED.setPixelColor (0 ، LED. Color (150 ، 0 ، 0)) ؛ // على greencolour LED.show () ؛ تأخير (100) ؛ G_value = analogRead (LDR) ؛ // احصل على جبل أخضر LED.setPixelColor (0 ، LED. Color (0 ، 0 ، 255)) ؛ // على bluecolour LED.show () ؛ تأخير (100) ؛ B_value = analogRead (LDR)؛ // الحصول على Blue mount if (R_value> G_value && R_value> B_value) {// الأحمر هو العرض الأكثر انعكاسًا ("RED" ، 3) ؛ } else if (G_value> R_value && G_value> B_value) {// green هو العرض الأكثر انعكاسًا ("GREEN" ، 3) ؛ } else if (B_value> R_value && B_value> G_value) {// blue هو العرض الأكثر انعكاسًا ("BLUE" ، 3) ؛ } Serial.print ("RED =") ؛ Serial.print (R_value) ؛ Serial.print ("GREEN =") ؛ Serial.print (G_value) ؛ Serial.print ("BLUE =") ؛ Serial.println (B_value) ؛ } else {LED.setPixelColor (0 ، LED. Color (0 ، 0 ، 0)) ؛ // إيقاف RGB LED.show () ؛ العرض ("NO COLOR" ، 2) ؛ }} void Display (String commond، int size) {// display data display.clearDisplay ()؛ display.setTextSize (الحجم) ؛ // عرض مقياس 1: 1 بكسل عادي. setTextColor (أبيض) ؛ // رسم شاشة عرض النص الأبيض. setCursor (0 ، 20) ؛ // ابدأ من شاشة الزاوية العلوية اليسرى. println (commond) ؛ display.display () ، }