البرمجة بأردوينو - 5

البرمجة باستخدم بطاقة أردوينو - الجزء 5

arduino00

كيف يحدد الروبوت أن أمامه عائقا في الطريق؟ كيف يعرف الروبوت المسافة بينه وبين اﻷشياء؟ كيف نستطيع أن نبرمج ردة فعل الروبوت عندما يواجه أحد العوائق؟  كيف، كيف وكيف....؟ نعم، هذا هو درس يومنا هذا....

ملاحظة مهمة

قبل أن تَطـلٍــعِ  على هذا الدرس، انصح المبتدئ منكم أن يرجع إلى الدروس اﻷولى من هذه السلسلة.... من يتابعنا من البداية سيجدها سهلة، ومن يعاند وهو لا يعرف عن الروبوتات إلا رسمها، ولا عن برمجتها إلا اسمها، فقد يظن أنه لا شيء أصعب منها، ﻷنه وبكل بساطة... دخل من غير بابها!!!!  ألم يأمر الله أن ندخل المساكن من أبوابها؟؟؟ ارجع بارك الله فيك الى البداية......


تقديم

نعم، لنكمل إذن.....

للإجابة عن أسئلة المقدمة دعني أذكرك بمبدأ هذه المسائل.....

1.        عندما تريد إشعال أو إطفاء  ضوء الغرفة..... فلابد أنك ستضغط على زر الكهرباء.....

2.        عندما تذهب الى محل تجاري راقي وتقترب من بابه..... سينفتح لك دون أن تمسه.....

3.        عند نشوب حريق في مبنى حكومي محصن..... سينفتح الماء تلقائيا.....

4.        إذا جن الليل أو تنفس الصبح...... سيتم إشعال أو إطفاء المصابيح العمومية تلقائيا في الطرقات.....

5.        عند انطلاق صاروخ باتجاه طائرة حربية....سيتبعها أينما ذهبت حتى يفجرها.....

6.        عند دخول أي آلية عسكرية في حدود معينة..... سيتم التقاط موضعها عن طريق الرادار.....

7.        الخ....

 

هل فكرت يوما كيف تعمل هذه اﻵليات أو ما نوع التكنولوجيا المستخدمة فيها؟؟؟؟

بكل بساطة، سيكون أغلبها (ان لم أقل كلها) مبنيا على أمرين أساسين اثنين:

l          مستشعر اليكتروني،

l          وبرمجة.

 

ما هو المستشعر الاليكتروني إذن؟

كما أن للانسان خمس حواس بالإضافة إلى المشاعر التي فطره الله عليها، وكما أن الأفعى تصنف في قائمة الكائنات ذوات الدم البارد لكنها مزودة بأعين لرؤية الأشعة تحت الحمراء (ولذا تصطاد بسهولة فرائسها من ذوات الدم الحار)، وكما أن بعض الحشرات تستطيع رؤية الاﻷشعة تحت الحمراء أو الفوق بنفسجية وكما وكما وكما....عد نعمت الله  أنت.... فإن الاﻷنظمة الروبوتية لها حواسها الخاصة تسمى بالمستشعرات الإليكترونية. 

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

أمثلة:

1.        الزر الكهربائي في غرفتك.... هو مستشعر الضغط... يشعر بضغطك عليه ليسمح بمرور الكهرباء الى المصباح.

2.        اﻷبواب تلقائية الفتح في المحلات الراقية.... تجد فوقها مستشعر المسافة التي تفصل الباب عن الشخص القادم.... مستشعر المسافة يعمل بواسطة اﻷشعة الحمراء.

3.        ينفتح الماء تلقائيا لإطفاء الحرائق.... ﻷن المبنى مزود بمستشعرات الحرارة أو الدخان.... إذا زادت درجة الحرارة عن المستوى المعقول أو زاد الدخان عن النسبة المعقولة فسيتم تنشيط هذه المستشعرات وستسمح للماء بالمرور ….

4.        تعمل المصابيح العمومية بمسشعرات الضوء.

5.        ويتبع الصاروخ الطائرة ﻷنه مزود بمستشعر الحرارة.

6.        أما الرادار فابحث عنها بنفسك....

لا داعي ﻷن تفكر في كيفية صنع هذه المستشعرات الآن، ﻷنها متوفرة في المحلات التجارية الاليكترونية... قد يكون ثمنها بأبخس اﻷثمان وقد يكون غاليا شيئا ما حسب نوع المستشعر الذي تريده.

 

ماذا عن البرمجة؟

هو موضوع يومنا هذا. ولن أتطرق لبرمجة كل مستشعر على حدى... فالذكي بالغمزة والغبي بالدبزة.


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

 image001  image002  image003

هذه لن نستغني عنها.

وهذا أيضا.

نريد حوالي 5 صمامات ضوئية LED

 image004  image005

زر (سواءا كان بأربع أرجل أو باثنين)

مهمته هو ايصال الكهرباء عند الضغط عليه. نسميه "مستشعر الضغط"

نحتاج لثلاث أنواع من المقاومات:

مقاومة واحدة تتراوح قيمتها بين 20 أوم و220 أوم

5 مقاومات تتراوح قيمها بين 300 أوم و 2 كيلو أوم

مقاومة واحدة تتراوح قيمتها بين 5 كيلوأوم و100 كيلوأوم

نصيحة 

إذا تعذر ولم تجد صمامات ضوئية أو مقاومات أو أي كان من هذه الاحتياجات فقم بالبحث عن جهاز اليكتروني غير مستعمل وابحث في مركباته الاليكترونية وخذها منه. وإلا، فكسر جهازا عندك أو عند والديك وخذ ما تحتاجه وارحنا. 


مستشعر الضغط

تعريف

مستشعر الضغط تبدو كلمة معقدة!!! لا عليك، انما هو عبارة عن زر كهربائي فقط أو بالأحرى انما هو قاطع تيار، بسيطة!!!!

يعمل هذا الزر كما هو موضح في الصور:

image006
عندما يتم الضغط على الزر الكهربائي (أي مستشعر الضغط أو قاطع التيار) فسيتم غلق الدارة الكهربائية ويشتعل المصباح.
لماذا نقول عنه مستشعر الضغط؟ لأنه وبكل بساطة يستشعر ضغط الانسان عليه فيوصل الدارة الكهربائية. وهذا تقريبا عمل كل المستشعرات الاليكترونية حيث تنبني على نفس المبدأ.

 

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

 

image007

 

تركيب

أولا وقبل كل شيء، من المستحسن التأكد من جميع المركبات الاليكترونية عن طريق ايصال بعضها ببعض بواسطة دارة كهربائية. قم بإنجاز الدارة التالية، وبعدها صل بطاقة Arduino بالحاسوب حتى يتم مرور الكهرباء إليها.

 image008

 image009
 image010  image011

البرمجة

تقديم

بعدما تم التأكد من أن مركباتنا هذه تعمل بكفاءة، سنتطرق الآن الى اللعب بها برمجيا.

كنا من قبل قد جعلنا بطاقة Arduino تقوم بارسال تعليمات الى الصمام الضوئي حتى يشتعل وينطفئ.

أما الآن فنريد من بطاقة Arduino أن تستقبل أوامر من المستشعر الاليكتروني (الزر الكهربائي).

يمثل الصمام الضوئي مخرجا(بالانجليزية output) أي مخرج الأوامر القادمة من البطاقة Arduino فيتم بذلك اشتعال أو انطفاء الصمام.

ويمثل الزر الكهربائي مدخلا)  بالانجليزية input) أي يتم ادخال أوامر الى البطاقة Arduino انطلاقا من الضغط عليه.

تركيب الدارة الكهربائية

image012 image013

 

الشيفرة

/*

 *  شيفرة مستشعر ضغط وصمام ضوئي

 */

 

int ledPin = 12;                //الصمام الضوئي موصل بالثقب 12

int switchPin = 2;            // مستشعر الضغط موصول بالثقب 2

int val;                            //                       متغير سنحتاج إليه

 

void setup()

{

  pinMode(ledPin, OUTPUT);      // اجعل الثقب 12 كمخرج

  pinMode(switchPin, INPUT);    // اجعل الثقب 2 كمدخل

}

 

void loop()

{

  val = digitalRead(switchPin);   //  val اقرأ قيمة المدخل 2 ثم احتفظ بها في

  if (val == LOW)                     //إذا تم الضغط على الزر الكهربائي

    {

    digitalWrite(ledPin, HIGH);   // أشعل الصمام إذن

   }

  else                                         //وإلا، إذ لم يتم الضغط على الزر الكهربائي

    {

    digitalWrite(ledPin, LOW);    // أطفأ الصمام

   }

}

 

أدوات الشرط البرمجية

بالنسبة لمن له او لها  دراية بالبرمجة لا داعي بقراءة هذه الفقرة، أما الفقير فيها فاصبر قليلا معنا هنا.

ستتعرض كثيرا في ميدان البرمجة الى ما يسمى بأدوات الشرط.

بالعربية هي كالتالي:

إذا ..... فإن....... وإلا.......

بالانجليزية هي كالتالي:

if...... then.....else......

باستعمال اللغة البرمجية C ستصبح كالتالي:

if(........) {…...} else {…....}

 

داخل القوسين (…...) يكون الشرط الذي نريد أن نتحقق منه.

داخل المعقوفتين {…...} تكون اﻷوامر التي نريد تنفيذها.

للشرط حالات محددة:

الحالة

الرمز

مثال

يساوي

==

If( a == 3)

{ Serial.print(“test”);}

يخالف

!=

If( jomla != “Salam alaikom”)

{ Serial.print(“test”);}

أكبر من

If( a > 7)

{ Serial.print(“test ”);}

أصغر من

If( d < -5.13)

{ Serial.print(“test ”);}

أكبر من أو يساوي

>=

If( x >= 66)

{ Serial.print(“test”);}

أصغر من أو يساوي

>=

If( b

{ Serial.print(“test”);}

و

&&

If( y > 3 && z < 6)

{ Serial.print(“test”);}

أو

||

If( w > 3 || w < -10)

{ Serial.print(“test”);}

 


تمارين

1.        قم بتغيير الشيفرة أعلاه  بحيث يكون العكس. أي عندما تضغط على الزر  ينطفئ الصمام  وإلا فإنه يبقى مشتعلا.

2.        قم بتغيير الشيفرة مرة أخرى بحيث إذا تم الضغط على الزر فإن الصمام يشتعل وينطفئ 5 مرات (يبقى نصف ثانية مشتعلا ونصف ثانية منطفأ). وسيبقى منطفأ كليا إذا لم يتم الضغط عليه.

3.        قم بإضافة صمام LED آخر الى الدارة الكهربائية كما هو مبين في الخطاطة. ثم، قم بتغيير الشيفرة بحيث إذا تم الضغط على الزر يشتعل صمام واحد ويبقى اﻵخر منطفأ، وإلا إذا لم يتم الضغط على الزر ينطفئ اﻷو ويشتعل الثاني.

 image014

التأليف
ترجمة وتحرير محمد السهلي


 المراجع 

http://www.ladyada.net/learn/arduino/lesson5.html

http://www.ascssf.org.sy/article-fayez-21.htm


التعليقات   

 
أخوك البسكري
0 # أخوك البسكري 2016-09-30 21:35
لقد استفدت من معلوماتك القيمة. حتى أسلوبك في الشرح أسلوب دكتور مع العلم أني لا أعرف مستواك الدراسي . يا أخي الله يجازيك خير و بارك الله فيك و في علمك .
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
عموش
0 # عموش 2015-04-17 06:25
كيف تتم كتابة البرمجة بالنسبة المسافات والاسطر
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
omar naser eldean
+1 # omar naser eldean 2013-12-24 01:10
السلام عليكم ورحمه الله وبركاته
كل ما يمكننى قوله ,, جزاك الله الـــــــــــف خير وميزك الله تعالى بلخير
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
محمد السهلي
0 # محمد السهلي 2013-12-26 06:18
نرجوا أن تستفيدوا من محتويات الموقع
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
ابن عامر الجزائري
+2 # ابن عامر الجزائري 2013-11-23 13:37
بارك الله فيك اخي على الدروس الطيبة
و على الطريقة المبسطة جدا جدا

هل تعلم اخي ..
كنت قد تعلمت البرمجة ب c
لكن بدأت أميل للاكترونيات
وكنت اقول في نفسي الالكترونيات عالم مدهش ليتني تعلمتها بدل ما قضيت سنوات اتعلم في البرمجة بمختلف اللغات..
اليوم ارجعتي لي الامل و تمكنت بفضل الله و بسبب دروسك الطيبة .. ان اكتشف عالم جديد لاستعمال لغة c
لقد وضعتني على الطريق الصحيح للبحث و التعمق ان شاء الله تعالى ما راح جهدك سدى و سينتفعكل من يمر هنا ..
كما نقول نحن المغاربة " افضل جزاء هي قولنا : الله يرحم والديك .. الله آمين
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
محمد السهلي
0 # محمد السهلي 2013-12-26 06:13
شكرا لك على اهتمامك، الله يوفقك ويكثر من أمثالك. :roll:
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
محمد يوسف
+1 # محمد يوسف 2013-09-20 20:59
مجموعة دروس جميلة

لكن رسم الدائرة الكهربية مش واضح شوية
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
simo
0 # simo 2013-09-25 10:36
ما هو الشيء غير الواضح بالنسبة لك؟
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
مهدي الجيطان
+2 # مهدي الجيطان 2013-09-06 05:26
راااااااااااااا ااائع
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
رندا
+1 # رندا 2013-09-03 08:12
جميل جدا تسلم ايديكم شكرا على الافادة
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 

أضف تعليق


كود امني
تحديث

المزيد في هذه الفئة :


Go to top