جدول المحتويات:
- الخطوة 1: مساحة ألوان RGB
- الخطوة 2: السفينة الجيدة Lissajous
- الخطوة 3: انتظر - كيف يمكننا قيادة مصباح بموجة جيبية؟
- الخطوة 4: لنقم ببناء نموذج لايساجوس ثلاثي الأبعاد
- الخطوة 5: وضع كل هذا معًا على Arduino
- الخطوة 6: ماذا بعد؟
فيديو: استكشاف مساحة اللون: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
ترى أعيننا الضوء من خلال مستقبلات حساسة للألوان الحمراء والخضراء والزرقاء في الطيف البصري. استخدم الناس هذه الحقيقة لتقديم صور ملونة عبر الأفلام والتلفزيون وأجهزة الكمبيوتر والأجهزة الأخرى على مدار المائة عام الماضية أو نحو ذلك.
في شاشة الكمبيوتر أو الهاتف ، يتم عرض الصور بألوان عديدة عن طريق تغيير شدة مصابيح LED الصغيرة باللون الأحمر والأخضر والأزرق بجوار بعضها البعض على الشاشة. يمكن إظهار الملايين من الألوان المختلفة من خلال تغيير شدة الضوء من المصابيح الحمراء أو الخضراء أو الزرقاء.
سيساعدك هذا المشروع على استكشاف مساحة اللون الأحمر والأخضر والأزرق (RGB) باستخدام Arduino و RGB LED وقليل من الرياضيات.
يمكنك التفكير في شدة الألوان الثلاثة ، الأحمر والأخضر والأزرق ، على أنها إحداثيات في المكعب ، حيث يكون كل لون على طول محور واحد ، وجميع المحاور الثلاثة متعامدة مع بعضها البعض. كلما اقتربت من نقطة الصفر أو أصل المحور ، قل اللون المعروض. عندما تكون قيم الألوان الثلاثة عند نقطة الصفر ، أو الأصل ، يكون اللون أسودًا ، ويكون RGB LED متوقفًا تمامًا. عندما تكون قيم الألوان الثلاثة عالية بقدر ما يمكن أن تذهب (في حالتنا ، 255 لكل لون من الألوان الثلاثة) ، فإن RGB LED قيد التشغيل بالكامل ، وتدرك العين هذا المزيج من الألوان باللون الأبيض.
الخطوة 1: مساحة ألوان RGB
شكراً لكينيث مورلاند للسماح له باستخدام صورته الجميلة.
نود استكشاف زوايا مكعب الفضاء اللوني ثلاثي الأبعاد باستخدام RGB LED المتصل بـ Arduino ، ولكننا نريد أيضًا القيام بذلك بطريقة مثيرة للاهتمام. يمكننا القيام بذلك عن طريق تداخل ثلاث حلقات (واحدة لكل من الأحمر والأخضر والأزرق) ، وتشغيل كل مجموعة ألوان ممكنة ، لكن هذا سيكون مملًا حقًا. عرض ضوء الليزر؟ اعتمادًا على الإعدادات ، يمكن أن يبدو نمط Lissajous كخط قطري ، أو دائرة ، أو شكل 8 ، أو نمط يشبه الفراشة المدببة التي تدور ببطء. يتم إنشاء أنماط Lissajous من خلال تتبع الإشارات الجيبية لاثنين (أو أكثر) من المذبذبات المرسومة على محاور x-y (أو ، في حالتنا ، x-y-z أو R-G-B).
الخطوة 2: السفينة الجيدة Lissajous
تظهر أنماط Lissajous الأكثر إثارة للاهتمام عندما تختلف ترددات الإشارات الجيبية بمقدار ضئيل. في صورة الذبذبات هنا ، تختلف الترددات بنسبة 5 إلى 2 (كلاهما رقمان أوليان). يغطي هذا النمط مربعه جيدًا ، ويدخل في الزوايا بشكل جيد. ستؤدي الأعداد الأولية الأعلى دورًا أفضل في تغطية المربع والضغط أكثر في الزوايا.
الخطوة 3: انتظر - كيف يمكننا قيادة مصباح بموجة جيبية؟
امسكت بي! نريد استكشاف مساحة الألوان ثلاثية الأبعاد التي تتراوح من إيقاف (0) إلى كامل (255) لكل لون من الألوان الثلاثة ، لكن الموجات الجيبية تختلف من -1 إلى +1. سنقوم ببعض الرياضيات والبرمجة هنا لنحصل على ما نريد.
- اضرب كل قيمة في 127 للحصول على القيم التي تتراوح من -127 إلى +127
- أضف 127 وقم بتقريب كل قيمة للحصول على قيم تتراوح من 0 إلى 255 (قريبة بدرجة كافية من 255 بالنسبة لنا)
يمكن تمثيل القيم التي تتراوح من 0 إلى 255 بأرقام أحادية البايت (نوع البيانات "char" في لغة البرمجة C-like Arduino) ، لذلك سنحفظ الذاكرة باستخدام التمثيل أحادي البايت.
لكن ماذا عن الزوايا؟ إذا كنت تستخدم الدرجات ، فإن الزوايا في نطاق الجيب من 0 إلى 360. إذا كنت تستخدم الراديان ، فإن الزوايا تتراوح من 0 إلى 2 مرات π ("pi"). سنفعل شيئًا يحفظ الذاكرة مرة أخرى في Arduino ، ونفكر في دائرة مقسمة إلى 256 جزءًا ، ولديها "زوايا ثنائية" تتراوح من 0 إلى 255 ، لذلك يمكن أن تكون "الزوايا" لكل لون ممثلة بأرقام أحادية البايت أو أحرف هنا أيضًا.
Arduino مدهش تمامًا كما هو ، وعلى الرغم من أنه يمكنه حساب القيم الجيبية ، إلا أننا نحتاج إلى شيء أسرع. سنقوم بحساب القيم مسبقًا ، ووضعها في مصفوفة طويلة من 256 إدخالًا من قيم أحادية البايت ، أو قيم char في برنامجنا (انظر إعلان SineTable […] في برنامج Arduino).
الخطوة 4: لنقم ببناء نموذج لايساجوس ثلاثي الأبعاد
للتنقل عبر الجدول بتردد مختلف لكل لون من الألوان الثلاثة ، سنحتفظ بمؤشر واحد لكل لون ، ونضيف إزاحات أولية نسبيًا إلى كل فهرس بينما نخطو عبر الألوان. سنختار 2 و 5 و 11 كتعويضات أولية نسبيًا لقيم الفهرس الأحمر والأخضر والأزرق. ستساعدنا قدرات Arduino الرياضية الداخلية الخاصة عن طريق الالتفاف تلقائيًا حيث نضيف قيمة الإزاحة إلى كل فهرس.
الخطوة 5: وضع كل هذا معًا على Arduino
تحتوي معظم Arduinos على عدد من قنوات PWM (أو تعديل عرض النبض). سنحتاج ثلاثة هنا. يعد Arduino UNO رائعًا لهذا الغرض. حتى متحكم Atmel الصغير 8 بت (ATTiny85) يعمل بشكل رائع.
ستقود كل قناة من قنوات PWM لونًا واحدًا من RGB LED باستخدام وظيفة "AnalogWrite" في Arduino ، حيث يتم تمثيل كثافة اللون في كل نقطة حول الدورة الجيبية بعرض النبض أو دورة العمل ، من 0 (الكل متوقف) إلى 255 (الكل في). تدرك أعيننا هذه النبضات المتفاوتة في عرض النبض ، والتي تتكرر بسرعة كافية ، مثل شدة مختلفة ، أو سطوع ، من الصمام الثنائي الباعث للضوء. من خلال الجمع بين جميع قنوات PWM الثلاثة التي تقود كل لون من الألوان الثلاثة في RGB LED ، نحصل على القدرة على عرض 256 * 256 * 256 ، أو أكثر من ستة عشر مليون لون!
ستحتاج إلى إعداد Arduino IDE (بيئة التطوير التفاعلية) ، وتوصيله بلوحة Arduino باستخدام كابل USB الخاص به. قم بتشغيل وصلات العبور من مخرجات PWM 3 و 5 و 6 (دبابيس المعالج 5 و 11 و 12) إلى ثلاثة مقاومات 1 KΩ (ألف أوم) على اللوحة الأولية أو الدرع الأولي ، ومن المقاومات إلى LED R و G ، ودبابيس B.
- إذا كان RGB LED عبارة عن كاثود شائع (طرف سالب) ، فقم بتشغيل سلك من الكاثود مرة أخرى إلى دبوس GND على Arduino.
- إذا كان RGB LED عبارة عن أنود شائع (طرف موجب) ، فقم بتشغيل سلك من الأنود مرة أخرى إلى دبوس + 5V في Arduino.
سيعمل رسم Arduino في كلتا الحالتين. لقد استخدمت SparkFun Electronics / COM-11120 RGB LED الكاثود المشترك (في الصورة أعلاه ، من موقع الويب SparkFun). أطول دبوس هو الكاثود المشترك.
قم بتنزيل مخطط RGB-Instructable.ino وافتحه باستخدام Arduino IDE واختبر تجميعه. تأكد من تحديد لوحة أو شريحة Arduino الصحيحة ، ثم قم بتحميل البرنامج في Arduino. يجب أن تبدأ على الفور.
سترى دورة RGB LED من خلال العديد من الألوان التي يمكنك تسميتها ، والملايين التي لا يمكنك تسميتها!
الخطوة 6: ماذا بعد؟
لقد بدأنا للتو في استكشاف RGB Color Space باستخدام Arduino. تتضمن بعض الأشياء الأخرى التي قمت بها مع هذا المفهوم ما يلي:
الكتابة مباشرة إلى السجلات الموجودة على الرقاقة ، بدلاً من استخدام AnalogWrite ، لتسريع الأمور حقًا
- تعديل الدائرة بحيث يسرع مستشعر القرب من الأشعة تحت الحمراء أو يبطئ الدورة اعتمادًا على مدى قربك
- برمجة متحكم Atmel ATTiny85 ذي 8 سنون مع محمل الإقلاع من Arduino وهذا الرسم التخطيطي
موصى به:
تجارب عشوائية لمحرك DC على محرك PWM + استكشاف أخطاء جهاز التشفير: 4 خطوات
تجارب PWM العشوائية لمحرك DC + استكشاف أخطاء جهاز التشفير: غالبًا ما تكون نفايات شخص ما كنزًا لشخص آخر ، وكانت هذه إحدى تلك اللحظات بالنسبة لي. إذا كنت تتابعني ، فمن المحتمل أنك تعلم أنني قمت بمشروع ضخم لإنشاء طابعة ثلاثية الأبعاد باستخدام الحاسب الآلي من الخردة. كانت تلك القطع
ما هي وحدة المعالجة المركزية ، وماذا تفعل ، وكيفية استكشاف الأخطاء وإصلاحها: 5 خطوات
ما هي وحدة المعالجة المركزية ، وماذا تفعل ، وكيف تحرّي الخلل وإصلاحه: تجد هنا كل يوم المصطلحات & quot؛ CPU & quot؛ أو & quot؛ المعالج & quot؛ يتم طرحها حولك ، ولكن هل تعرف حقًا ما يعنيه؟ سأستعرض ما هي وحدة المعالجة المركزية وماذا تفعل ، ثم سأستعرض مشكلات وحدة المعالجة المركزية الشائعة وكيفية إصلاحها
نصائح استكشاف أخطاء أجهزة استشعار أطلس: 7 خطوات
نصائح حول استكشاف أخطاء أجهزة استشعار أطلس: تهدف هذه الوثائق إلى توفير بعض المعلومات الأساسية التي ستتيح الاستخدام والأداء المناسبين لأجهزة استشعار أطلس العلمية. يمكن أن يساعد في تصحيح الأخطاء لأن بعض المجالات التي تركز عليها هي مشكلات شائعة يواجهها المستخدمون. إنها
كيفية استكشاف أخطاء تصميم ثنائي الفينيل متعدد الكلور وإصلاحها؟: 8 خطوات (بالصور)
كيفية استكشاف أخطاء تصميم PCB وإصلاحها؟: في كل مرة أقوم فيها بتصميم PCB ، أريد دفع حدودي قليلاً وتجربة شيء لم أجربه من قبل ، هذه المرة أردت إضافة إمكانية برمجة هذه اللوحة بدون مبرمج خارجي. لقد وجدت بعض محولات USB إلى UART رخيصة تسمى CH
استكشاف أخطاء جهاز الكمبيوتر وإصلاحها: 5 خطوات
استكشاف أخطاء جهاز الكمبيوتر وإصلاحها: سنحتاج إلى برنامج تشغيل لولبي من Philips ووعاء صغير. سنضع برغيًا إضافيًا في الوعاء حتى لا نفقد أيًا منه