الأربعاء، 26 ديسمبر 2012

RGB LED controlled By arduino part 2


أهلاً بكم مجدداً .

قد تحدثنا في الجزء الأول لهذه التدوينة عن الباعث ثلاثي الألوان 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 و التي قمت بتنفيذها خلال التدوينة القادمة.

الاثنين، 24 ديسمبر 2012

RGB LED controlled By arduino part 1

RGB LED Digital control 



اليوم سنتكلم عن موضوع جديد و ممتع في عالم الإضاءة ألا و هو ال RGB و سنتكلم عن ماهيته , و أنواعه و كيف يعمل ؟



كما سنتطرق لكيفية توصيله مع الأردوينو و نتعلم عدة تقنيات لبرمجته .

أولاً : ما هو ال RGB ؟


هو نوع من أنواع الباعث الضوئي LED يحتوي على الألوان الرئيسية المكونة لكل الألوان في الطبيعة "الأخضر و الأحمر و الأزرق" و عندما يتم خلط هذه الألوان بنسب مختلفة , تظهر ألوان أخرى نتيجة هذا الخلط , كالأصفر و الأبيض و الزهري ..ألخ كلٌ حسب نسبة "شدة" إضاءة كل لون من الألوان الأساسية RGB 

تسمى هذه الطريقة بطريقة " الباعث متعدد الألوان " و هي بحاجة لدارة إلكترونية لعمل هذا الخلط بُغية الحصول على ألوان مختلفة .

يتكون ال  RGB من 4 أرجل , رجل مشترك "مصعد أو مهبط" و رجل لكل لون رئيسي " أحمر ,أخضر , أزرق " كما في الصورة .


ال RGB يمكن أن يكون ذا مصعد مشترك أو مهبط مشترك , و لكل نوع طريقة مختلفة قليلاً في التحكم "أي في كود البرمجة"

لنبدأ العمل J :

لنبدأ الآن العمل و لنحضر المكونات الرئيسية لبداية تعاملنا مع ال RGB :
1) RGB LED  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 .
}




و هنا فيديو يبين تطبيق البرنامج على دارة عمليه :


التدوينة القادمة ستتحدث عن التحكم  باستخدام أوامر الإخراج التناظرية analog Write 

إلى ذلك الوقت , إلى اللقاء 



السبت، 8 ديسمبر 2012

مسجل الإزاحة Shift Register 74595 الجزء الثاني


  مسجل الإزاحة Shift Register 74595 الجزء الثاني 




  في البوست السابق طرحت هذا التساؤل .. هل بإمكاننا التحكم بمسجلي أزاحة باستخدام نفس عدد المداخل التي استخدمناها للتحكم بمسجل إزاحة واحد ؟ 

الجواب نعم ! هناك مدخل لم نقم بتوصيله , هو المدخل رقم 9 في مسجل الإزاحة , يقوم هذا المدخل بنقل" Shifting " للبيانات الموجودة في المسجل إذا تم تحميل بايت لمسجل الإزاحة , و يحمل البايت الذي تم استبداله للمسجل الإزاحة الآخر المربوط معه.


هذه الطريقة مفيد جداً لو أردنا التحكم بالبواعث الضوئية , المقطّعات السباعية Seven segment , مصفوفات البواعث الضوئية  LED Matrix , الشاشات البلورية الكريستالية LCD , و غيرها الكثير .


لكي نعرف الطريقة التي يمكننا من خلالها نقل أكثر من بايت واحد عبر عدد من مسجلات الإزاحة المربوطة معاً .


سنحتاج لنفس المعدات التي استخدمناها في التجربة السابقة , لكن سنضيف مسجل إزاحة آخر .


مخطط الدارة يكون كما يلي :




  لم يختلف توصيلها عن التوصيل الماضي سوى توصيل المدخل # 9 من مسجل الإزاحة الأول إلى المدخل رقم 14 من مسجل الإزاحة الثاني , و هكذا ....









  يمكن أيضاً كتابة البرنامج بطريقة أخرى , يمكن الإطلاع عليه , ستجده في المرفقات في نهاية المقال .

  في الختام , كم يمكن لنا أن نصل مسجل إزاحة مع بعض ؟
  حقيقة لا املك عدد معين يمكن وصله من مسجلات الإزاحة معاً , لكن أنا جربت أن أصل 4 مسجلات إزاحة معاً .

يمكنك تحميل البرنامج ل 4 مسجلات ازاحه من هنا
Four shit register Code here

    و الفيديو أدناه يبين كيفية سير البرنامج 
    
  
  تحية للجميع .
 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.