قد تحدثنا في الجزء الأول لهذه التدوينة عن الباعث ثلاثي الألوان RGB و كيفية وصله و برمجة المتحكم الأصغري على بيئة الأردوينو للتحكم بالألوان التي يضيئها .
اليوم سأعرض الطريقة الثانية في التحكم بهذا الباعث الضوئي مستفيداً من الأوامر التناظرية Analog Write و تقنية التعديل النبضي PWM
الفرق بين الطريقة الرقمية و التناظرية , أن الرقمية محصورة بثمانية الألوان فقط , أما هذه الطريقة"التناظرية" فتعطي مجالأ واسعاً من الألوان أكبر من الرقمي .
لنبدأ بالتعرف عليها أكثر :
البرمجة باستخدام
أوامر الإخراج التناظرية analog Write:
و هي الطريقة الأكثر شيوعاً للتحكم بالRGB نظراً للكم الهائل من الألوان الممكن الحصول عليها
" فعلياً حسب تجربتي 216 لون "
كيفية البرمجة :
هنا سنستخدم أقطاب الأردوينو ك PWM Pin و هنا يمكننا التحكم
بفولتية الخرج 0-5 فولت بحيث تكون الحساسية 19.53 ملي فولت \وحدة " مدى
التحكم من 0 -255 وحده "
هنا سنستخدم القيم التي في برمجية الPaint أو أي برنامج
يمكنه أن يعطينا قيم تناظرية لكل لون على حدا .
مثلاً : اللون الأزرق يعبر عن( 0,0,255) و هكذا ....
لنبدأ بكتابة الألوان التي نريد إظهارها و بموازاتها القيم التناظرية لها
" أو يطلق عليها الرمز العشري Decimal code :
هذا رابط لموقع إلكتروني يحتوي على كل الألوان بالإضافة للرموز العشريه لها
الجزء الأكثر إمتاعاً .... إنشاء مكتبة خاصة للطريقتين على الأردوينو .
قمت بعمل مكتبه خاصة لكل طريقة لتسهل علينا التحكم مستقبلاً بالrgb و لتقليل الوقت اللازم لعمل نفس البرنامج . سأشرح المكتبة الخاصة بالRGB و التي قمت بتنفيذها خلال التدوينة القادمة.
اليوم سنتكلم عن موضوع جديد و ممتع في عالم الإضاءة ألا و هو ال RGBو سنتكلم عن ماهيته , و أنواعه و كيف يعمل ؟
كما سنتطرق لكيفية توصيله مع الأردوينو و نتعلم عدة تقنيات لبرمجته .
أولاً : ما هو ال RGB ؟
هو نوع من أنواع الباعث الضوئي LED يحتوي على الألوان
الرئيسية المكونة لكل الألوان في الطبيعة "الأخضر و الأحمر و الأزرق" و
عندما يتم خلط هذه الألوان بنسب مختلفة , تظهر ألوان أخرى نتيجة هذا الخلط ,
كالأصفر و الأبيض و الزهري ..ألخ كلٌ حسب نسبة "شدة" إضاءة كل لون من
الألوان الأساسية RGB
تسمى هذه الطريقة بطريقة " الباعث متعدد الألوان " و هي بحاجة
لدارة إلكترونية لعمل هذا الخلط بُغية الحصول على ألوان مختلفة .
يتكون ال RGBمن 4 أرجل , رجل مشترك "مصعد أو
مهبط" و رجل لكل لون رئيسي " أحمر ,أخضر , أزرق " كما في الصورة .
ال RGBيمكن أن يكون ذا مصعد مشترك أو مهبط مشترك , و
لكل نوع طريقة مختلفة قليلاً في التحكم "أي في كود البرمجة"
لنبدأ العمل J :
لنبدأ الآن العمل و لنحضر المكونات الرئيسية لبداية تعاملنا مع ال RGB:
1) RGBLED 5mm
أنا استخدمت الباعث ذو المهبط المشترك
2)مقاومة 470 أوم .
3)أسلاك
4) لوحة تعليمية مثقوبة BreadBoard
5) أفوميتر
6) بطاقة أردوينو .
أولاً كيف نتحقق من نوعية ال RGBالذي بين
يدينا ؟ هل هو مصعد مشترك أم مهبط مشترك ؟
1) أول طريقة للأختبار هو استخدام طريقة الأفوميتر , و التي تعتمد على
خاصية فحص الديود في الجهاز , يجب عند وصل القطب الموجب للأفوميتر بالطرف الموجب
للباعث الضوئي و الطرف السالب للأفوميتر بالطرف السالب للباعث الضوئي , يجب عندها
أن يضيئ الLED أو أن تظهر قراءة على
شاشة الجهاز .
و إذا لم يضيئ ال LED نقوم بعكس أقطاب
الأفوميتر للتأكد .
إذا لم يضيئ ال LED فأعلم أن هناك عطل بالديود أو خطأ بضبط الجهاز
2) بإستخدام طريقة توصيل الدارة بمصدر تغذية :
فقط تقوم بإيصال التغذية للأقطاب بشكل صحيح " ولا تنسى المقاومة لكي لا يتلف
الled.
ممتاز لقد أنتهينا من الجزء الأول من العمل .
السؤال التالي الآن ... ما هي النسبة التي يجب أن نخلط بها الألوان لنحصل
على ألون المطلوب ؟ و كيف يتم ذلك بالبرمجة ؟
حسناً , يجب معرفة في البداية
الألوان الفرعية و نسبة تداخل كل لون اساسي فيها , يتم معرفة هذا بطرق
عديدة , حيث أن أغلب برامج الرسوم و التعامل مع الصور تعطي هذه النسب بشكل دقيق .
فمثلاً برنامج الpaint المتوافر لدى الجميع
تقريباً يوفر ما نحتاجه للبرمجة , و طريقة الحصول على القيم كالآتي
كيفية توصيله :
يتم توصيل الدارة مع بطاقة الأردوينو على الشكل التالي :
يمكن أيضاً توصيل فقط مقاومة واحدة على المدخل المشترك " 150- 220 أوم
" .
معلومة مهمة ايضاً حول برمجة ال RGB, حيث يمكننا عمل جدول
يسمى جدول الحقيقة Truth
table يمكننا معرفة ما هو اللون الذي
سينتج عند كل عملية إدخال و هذا ما سنراه بعد قليل :
الآن لندخل للبرمجة ..
برمجة ال RGB باستخدام الأردوينو :
سنسنخدم طريقتين للبرمجة :
1) البرمجة باستخدام أوامر الإخراج الرقمية digital Write .
2) البرمجة باستخدام أوامر الإخراج التناظرية analog Write
و سنرى الفرق بين الطريقتين كما يلي :
1) البرمجة
باستخدام أوامر الإخراج الرقمية digital Write:
يستحدم الأمر digital Write لتفعيل أو عدم تفعيل الخرج , و محددات استخدام
هذه الطريقة هي محدودية الألوان التي يمكن الحصول عليها " عددها 23
و يساوي 8 ألوان فقط ! ."
سنقوم بعمل جدول حقيقة و استخدام طريقة برمجية الPaint لمعرفة
الألوان التي ستظهر :
هذا ما سنستخدمه في كتابة برنامج الأردوينو الآن
أولاً جدول الحقيقة Truth Table هو جدول يتم وضع جميع الأحتمالات التي ستظهر عند تطبيق الأمر و إخراجه لمداخل المتحكم , أي بمعنى أخر هو جدول يوضح العلاقة بين المدخلات و المخرجات . لنرى الجدول التالي و الذي يوضح جدول الحقيقة لمشروعنا :
جدول الحقيقة للRGB
و للتوضيح أكثر , لو اردنا إظهار اللون الأحمر RED يجب أن تكون المداخل المربوطة مع مدخلي اللون الأزرق و الأخضر في وضع منخفضLOW و مدخل اللون الأحمر في وضع مرتفع HIGH و هكذا .
توصيلة الدارة كما في الصورة أدناه .
توضيح بسيط للبرنامج ... قمت هنا بكتابة الأوامر في جملة استدعاء لوحدها و
وضعت كل تعليمات الخرج فيها ثم قمت باستدعائها داخل جملة التكرار , مثال
Void setup(){
…….
}
Void Red(){
Write your
code for red color ….
}
Void loop(){
// need to
blink red color….
Red();…..
call statement , here the prog. Will return
to void Red and execute it then return to loop statement .
في البوست السابق طرحت هذا التساؤل .. هل بإمكاننا التحكم بمسجلي أزاحة باستخدام نفس عدد المداخل التي استخدمناها للتحكم بمسجل إزاحة واحد ؟
الجواب نعم ! هناك مدخل لم نقم بتوصيله , هو المدخل رقم 9 في مسجل الإزاحة , يقوم هذا المدخل بنقل" Shifting " للبيانات الموجودة في المسجل إذا تم تحميل بايت لمسجل الإزاحة , و يحمل البايت الذي تم استبداله للمسجل الإزاحة الآخر المربوط معه. هذه الطريقة مفيد جداً لو أردنا التحكم بالبواعث الضوئية , المقطّعات السباعية Seven segment , مصفوفات البواعث الضوئية LED Matrix , الشاشات البلورية الكريستالية LCD , و غيرها الكثير . لكي نعرف الطريقة التي يمكننا من خلالها نقل أكثر من بايت واحد عبر عدد من مسجلات الإزاحة المربوطة معاً . سنحتاج لنفس المعدات التي استخدمناها في التجربة السابقة , لكن سنضيف مسجل إزاحة آخر . مخطط الدارة يكون كما يلي :
لم يختلف توصيلها عن التوصيل الماضي سوى توصيل المدخل # 9 من مسجل الإزاحة الأول إلى المدخل رقم 14 من مسجل الإزاحة الثاني , و هكذا ....