الجمعة، 9 نوفمبر، 2012

التحكم بالمداخل المتحكم الأصغري و إضاءة و إطفاء البواعث الضوئية LED

التحكم بالمداخل المتحكم الأصغري و إضاءة و إطفاء البواعث الضوئية LED



في أول درس لنا عن الأردوينو , سنتطرق أولاً لأهم أوامر هذه اللغة و كيف سنتحكم بالمداخل الموجودة في المتحكم بوساطة هذه اللغة , و أيضاً لنعمل أول برنامج لنا بيئة أردوينو و الذي سنتطرق له في هذا المقال .

برنامجنا الأول على اردوينو هو كيفية إضاءة باعث ضوئي LED لأو مجموعة من ال LED وكيفية التحكم في تأخير الفتح و الإغلاق أو ما يسمى blink.

ما نريد أن نفعله؟

عند شراء لوحة اردوينو  ، سترى باعث ضوئي LED  ملحوم على لوحة، وهذا LED يتم الاتصال مع المقاوم 10KΩ والتوصيل مع PIN 13، لذا عند توصيل الأردوينو لأول مرة  إلى الكمبيوتر  سترى ذلك الوميض لثانية واحدة 



سنقوم بعدها بتوسيع هذه السلسلة لتشمل عدد اكبر من البواعث الضوئية و عدد أكبر من مداخل لوحة الأردوينو .

سنكتب برنامجنا في البداية , ثم سنشرح كل أمر استخدمناه في تكوين هذا البرنامج .


جهّز معداتك :




المعدات التي سنحتاجها في هذا الدرس :


1) BLUE LED 5mm .
2) Green LED 5mm
3) White LED 5mm
" تستطيع استخدام أي لون متوفر لديك "
4) مقاومات 100 أوم عدد 3
5) بعض اسلاك التوصيل
6) لوحة مثقوبة لتثبيت القطع Bread board

توصيل الدارة :


توصيل الدارة يبينه الرسم التالي :


كيفية أختيار المقاومة المناسبة ؟

وظيفة المقاومة  هي تقليل تدفق التيار المار بالباعث الضوئي LED آمنة لذلك، وعلى مداخل لوحة الاردوينو لتكون في مأمن من الضرر "استخدام مداخل المتحكم  I / O دبوس كمصدر أو كمصرف للتيار أعظمي هو  40mA ".

من النشرة الفنية Data sheet للبواعث الضوئية  نرى أنه:




If = 20mA

هذا هو التيار الأمامي الأكبر الذي يمكنه المرور بالباعث الضوئي دون ان يتلفه

ونحن نعلم أن الجهد إلى الأمام ليقودها هو 2.8-3.4 V حسب اللون .


المعادلة لتحديد R هو 



                                 R=(Vs-Vf)/If.  

                           R= (5-3)/20m=100Ω

البرنامج الذي كتبته موجود هنا 
// أبدأ بنسخ البرنامج من هنا 
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/

//****************************************************
//Name :Mohannad Rawashdeh .
//Date "30/6/2012 3:00pm
// Description: This program design to make a blink for 3 led .
//with delay of 100ms , Using digital pin 2,3,4 Using For loop Statment.
// Programmed for genotronex blog .... http://genotronex.blogspot.com/

//*******************************************************

//Define Delay constant 
int del=500;

void setup ()
{
 //define Digital pin 2,3,4 as OUTPUT!
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}

void loop(){ 

  digitalWrite(2,HIGH);   //Make the Green LED become On !
  digitalWrite(3,HIGH);   //Make the Blue LED become On  !
  digitalWrite(4,HIGH);   //Make the White LED become On !
  delay(del);             //Delay 100ms that's allow to 
                          //You to see on/off situation  
  digitalWrite(2,LOW);    //Make the Green LED become Off !
  digitalWrite(3,LOW);    //Make the Blue LED become Off !
  digitalWrite(4,LOW);    //Make the White LED become Off!
  delay(del);             //Delay 100ms that's allow to 
                          //You to see on/off situation 
// Return To loop statment again 
}






هذا الفيديو يوضح كيف يعمل البرنامج عند تطبيقه 



     التعليمات الرئيسية في البرنامج:


1) Void setup(): 
يتم استدعاء هذه الدالة عندما يبدأ البرنامج. و نستخدمها لتهيئة المتغيرات و حالة المداخل "كدخل أو خرج "، بدء استخدام المكتبات، وما إلى ذلك , و تعمل هذه الدالة فقط عند التشغيل مرة واحدة فقط، بعد كل عملية ربط بمصدر الطااقة أو إعادة تعيين Reset  للوحة اردوينو.

تذكر هذه الدالة يجب وجودها بأي برنامج مهما كان .

2)Void loop():

هذه الدالة تقوم  بتحديد القيم الأولية، وحلقة () وظيفتها هي السماح للبرنامج لتغيير والاستجابة و تطبيق الأوامر و قراءة المتغيرات الخارجية المطبقة و الأستجابة بها , أي  نستخدمها للتحكم بنشاط البرنامج 

digitalWrite(pin, value)

هو أمر يقوم بالكتابة لأحد مداخل المتحكم , إما ليكون HIGH أي تكون فولتيته 5 فولت " أو 3.3 فولت حسب التغذية و نوع اللوحة المبرمجة"   أو تعبر عن كون المدخل مصدر للتيار Current source    , أو LOW أي صفر فولت و هي عادة تعبر عن كون المدخل مصرف للتيار Current Sink 

Pin :  هو المدخل الذي نريد التحكم به رقمياً
Value   : HIGH or a LOW
delay(time);
هذا الأمر يقوم بعمل تأخير زمني مقدارهtime يقدر بالملي ثانية و خلال هذا الوقت لا يقوم المتحكم بعمل أي شيء و يبقى على الحالة "الأمر" الذي كان قبل التأخير .

يمكن الآن القول أننا أدركنا المبادئ الرئيسية للبرمجة , هنا عدة برامج أخرى يمكنك تطبيقها و الأستفادة من طريقة كتابة  الأوامر لتطبيق ما تريده من برامج .

في النهاية يمكنك تحميل هذه البرامج و التي تحتوي ايضاً على نفس الملفات لكن من امتداد hex بالأضافة لمحاكاة نفس الدارة على برنامج البروتوس
.

4 التعليقات :

  1. مشكور اخي كفيت ووفيت صدقا مدونه رائعه

    ردحذف
  2. ماذا افعل لتشغيل ريلاي 5فولت بدلا من LED ؟ طبعا بعد نزع المقاومة

    ردحذف
    الردود
    1. هناك طريقتين :

      أولاً ان تستخدم موديول جاهز و هو ما أفضله و قد شرحت عنه في المدونة من قبل :

      http://www.genotronex.com/2013/07/relay.html

      او أن تضع ترانزستور بدلاً من ال LED في حال استخدام relay عادي .

      حذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.