ماذا لو استطعنا إنشاء ألوان مختلفة باستخدام مصباح RGB واحد وجعل ركن غرفتنا أكثر جاذبية؟ لذلك ، إليك مصباح خلط ألوان بسيط يعتمد على Arduino والذي يمكن أن يغير اللون عندما يكون هناك تغيير في الضوء في الغرفة. لذلك فإن هذا المصباح سوف يغير لونه تلقائيًا وفقًا لظروف الإضاءة في الغرفة.
كل لون هو مزيج من اللون الأحمر والأخضر والأزرق. حتى نتمكن من توليد أي لون باستخدام الألوان الأحمر والأخضر والأزرق. لذلك ، هنا سوف نغير PWM ، أي شدة الضوء على LDRs. سيؤدي ذلك إلى تغيير شدة اللون الأحمر والأخضر والأزرق في RGB LED ، وسيتم إنتاج ألوان مختلفة.
يوضح الجدول أدناه مجموعات الألوان مع التغيير الخاص بها في دورات العمل.
المواد المطلوبة:
- 1 × اردوينو أونو
- 1 × اللوح
- مقاومات 3 × 220 أوم
- 3 × 1 كيلو أوم مقاومات
- أسلاك توصيل
- 3 × LDRs
- 3 شرائط ملونة (أحمر ، أخضر ، أزرق)
- 1 × RGB LED
LDR:
سنستخدم المقاوم الضوئي (أو المقاوم المعتمد على الضوء ، LDR ، أو الخلية الموصلة للصور) هنا في هذه الدائرة. تصنع LDRs من مواد شبه موصلة لتمكينها من الحصول على خصائصها الحساسة للضوء. تعمل LDRs أو PHOTO RESISTORS على مبدأ "موصلية الصورة". الآن ما يقوله هذا المبدأ ، عندما يسقط الضوء على سطح LDR (في هذه الحالة) تزداد موصلية العنصر أو بعبارة أخرى ، تنخفض مقاومة LDR عندما يسقط الضوء على سطح LDR. تتحقق خاصية الانخفاض في مقاومة LDR لأنها خاصية لمواد أشباه الموصلات المستخدمة على السطح.
هنا يتم استخدام ثلاثة مستشعرات LDR للتحكم في سطوع كل من الأحمر والأخضر والأزرق LED داخل RGB LED. تعرف على المزيد حول التحكم في LDR باستخدام Arduino هنا.
RGB LED:
هناك نوعان من RGB LEDs ، أحدهما نوع الكاثود الشائع (سلبي شائع) والآخر هو نوع الأنود الشائع (النوع الإيجابي الشائع). في CC (الكاثود المشترك أو السلبي المشترك) ، سيكون هناك ثلاثة أطراف موجبة ، كل طرف يمثل لونًا وطرفًا سالبًا يمثل الألوان الثلاثة.
في دائرتنا سنستخدم نوع CA (الأنود المشترك أو الإيجابي المشترك). في نوع الأنود المشترك ، إذا أردنا تشغيل RED LED ، فنحن بحاجة إلى تأريض دبوس RED LED وتشغيل الإيجابي المشترك. الشيء نفسه ينطبق على جميع المصابيح. تعلم هنا واجهة RGB LED مع Arduino.
مخطط الرسم البياني:
تم إعطاء مخطط الدائرة الكاملة لهذا المشروع أعلاه. يمكن الحصول على الوصلة الأرضية + 5V الموضحة في مخطط الدائرة من 5V والدبوس الأرضي في Arduino. يمكن تشغيل Arduino نفسه من الكمبيوتر المحمول الخاص بك أو من خلال مقبس DC باستخدام محول 12 فولت أو بطارية 9 فولت.
سوف نستخدم PWM لتغيير سطوع RGB led. يمكنك معرفة المزيد عن PWM هنا. فيما يلي بعض أمثلة PWM مع Arduino:
- مصدر طاقة متغير بواسطة Arduino Uno
- DC Motor Control باستخدام Arduino
- اردوينو مولد النغمة
شرح البرمجة:
أولاً ، نعلن عن جميع المدخلات ودبابيس الإخراج كما هو موضح أدناه.
const بايت red_sensor_pin = A0 ؛ const بايت green_sensor_pin = A1 ؛ const بايت blue_sensor_pin = A2 ؛ const بايت green_led_pin = 9 ؛ كونت بايت blue_led_pin = 10 ؛ كونت بايت red_led_pin = 11 ؛
قم بتعريف القيم الأولية لأجهزة الاستشعار والمصابيح بأنها 0.
int red_led_value غير موقعة = 0 ؛ int blue_led_value غير موقعة = 0 ؛ int green_led_value = 0 ؛ int red_sensor_value غير موقعة = 0 ؛ int blue_sensor_value غير موقعة = 0 ؛ int green_sensor_value غير موقعة = 0 ؛ إعداد باطل () { pinMode (red_led_pin، OUTPUT) ؛ pinMode (blue_led_pin ، الإخراج) ؛ pinMode (green_led_pin ، الإخراج) ؛ Serial.begin (9600) ؛ }
في قسم الحلقة ، سنأخذ إخراجًا من ثلاثة أجهزة استشعار باستخدام analogRead () ؛ تعمل وتخزن في ثلاثة متغيرات مختلفة.
حلقة باطلة () { red_sensor_value = analogRead (red_sensor_pin) ؛ تأخير (50) ؛ blue_sensor_value = analogRead (blue_sensor_pin) ، تأخير (50) ؛ green_sensor_value = analogRead (green_sensor_pin) ،
اطبع هذه القيم على الشاشة التسلسلية لغرض تصحيح الأخطاء
Serial.println ("Raw Sensor Values:")؛ Serial.print ("\ t أحمر:")؛ Serial.print (red_sensor_value) ؛ Serial.print ("\ t أزرق:") ؛ Serial.print (blue_sensor_value) ؛ Serial.print ("\ t أخضر:") ؛ Serial.println (green_sensor_value) ؛
سنحصل على قيم من 0 إلى 1023 من المستشعرات ولكن دبابيس Arduino PWM لديها 0-255 قيمة كإخراج. لذا علينا تحويل القيم الأولية إلى 0-255. لذلك يتعين علينا قسمة القيم الأولية على 4 أو ببساطة يمكننا استخدام وظيفة تعيين Arduino لتحويل هذه القيم.
red_led_value = red_sensor_value / 4 ؛ // تعريف Red LED blue_led_value = blue_sensor_value / 4 ؛ // حدد Blue LED green_led_value = green_sensor_value / 4 ؛ // تعريف Green Led
طباعة القيم المعينة إلى الشاشة التسلسلية
Serial.println ("Mapped Sensor Values:")؛ Serial.print ("\ t أحمر:")؛ Serial.print (red_led_value) ؛ Serial.print ("\ t أزرق:") ؛ Serial.print (blue_led_value) ؛ Serial.print ("\ t أخضر:") ؛ Serial.println (green_led_value) ؛
استخدم analogWrite () لتعيين الإخراج لـ RGB LED
analogWrite (red_led_pin ، red_led_value) ؛ // تشير إلى كتابة تمثيلية LED حمراء (blue_led_pin ، blue_led_value) ؛ // تشير إلى كتابة تمثيلية LED زرقاء (green_led_pin ، green_led_value) ؛ // يشير إلى اللون الأخضر
عمل مصباح خلط ألوان اردوينو:
نظرًا لأننا نستخدم ثلاثة LDR ، فعند سقوط الضوء على هذه المستشعرات ، تتغير المقاومة نتيجة لذلك تتغير الفولتية أيضًا في المسامير التناظرية في Arduino والتي تعمل بمثابة دبابيس إدخال لأجهزة الاستشعار.
عندما تتغير شدة الضوء على هذه المستشعرات ، ستتوهج إضاءة RGB الخاصة بها مع تغير مقدار المقاومة ولدينا خلط ألوان مختلف في RGB led باستخدام PWM.