البرمجة باستخدم بطاقة أردوينو - الجزء 5
كيف يحدد الروبوت أن أمامه عائقا في الطريق؟ كيف يعرف الروبوت المسافة بينه وبين اﻷشياء؟ كيف نستطيع أن نبرمج ردة فعل الروبوت عندما يواجه أحد العوائق؟ كيف، كيف وكيف....؟ نعم، هذا هو درس يومنا هذا....
|
ملاحظة مهمة
قبل أن تَطـلٍــعِ على هذا الدرس، انصح المبتدئ منكم أن يرجع إلى الدروس اﻷولى من هذه السلسلة.... من يتابعنا من البداية سيجدها سهلة، ومن يعاند وهو لا يعرف عن الروبوتات إلا رسمها، ولا عن برمجتها إلا اسمها، فقد يظن أنه لا شيء أصعب منها، ﻷنه وبكل بساطة... دخل من غير بابها!!!! ألم يأمر الله أن ندخل المساكن من أبوابها؟؟؟ ارجع بارك الله فيك الى البداية......
تقديم
نعم، لنكمل إذن.....
للإجابة عن أسئلة المقدمة دعني أذكرك بمبدأ هذه المسائل.....
1. عندما تريد إشعال أو إطفاء ضوء الغرفة..... فلابد أنك ستضغط على زر الكهرباء.....
2. عندما تذهب الى محل تجاري راقي وتقترب من بابه..... سينفتح لك دون أن تمسه.....
3. عند نشوب حريق في مبنى حكومي محصن..... سينفتح الماء تلقائيا.....
4. إذا جن الليل أو تنفس الصبح...... سيتم إشعال أو إطفاء المصابيح العمومية تلقائيا في الطرقات.....
5. عند انطلاق صاروخ باتجاه طائرة حربية....سيتبعها أينما ذهبت حتى يفجرها.....
6. عند دخول أي آلية عسكرية في حدود معينة..... سيتم التقاط موضعها عن طريق الرادار.....
7. الخ....
هل فكرت يوما كيف تعمل هذه اﻵليات أو ما نوع التكنولوجيا المستخدمة فيها؟؟؟؟
بكل بساطة، سيكون أغلبها (ان لم أقل كلها) مبنيا على أمرين أساسين اثنين:
l مستشعر اليكتروني،
l وبرمجة.
ما هو المستشعر الاليكتروني إذن؟
كما أن للانسان خمس حواس بالإضافة إلى المشاعر التي فطره الله عليها، وكما أن الأفعى تصنف في قائمة الكائنات ذوات الدم البارد لكنها مزودة بأعين لرؤية الأشعة تحت الحمراء (ولذا تصطاد بسهولة فرائسها من ذوات الدم الحار)، وكما أن بعض الحشرات تستطيع رؤية الاﻷشعة تحت الحمراء أو الفوق بنفسجية وكما وكما وكما....عد نعمت الله أنت.... فإن الاﻷنظمة الروبوتية لها حواسها الخاصة تسمى بالمستشعرات الإليكترونية.
أمثلة:
1. الزر الكهربائي في غرفتك.... هو مستشعر الضغط... يشعر بضغطك عليه ليسمح بمرور الكهرباء الى المصباح.
2. اﻷبواب تلقائية الفتح في المحلات الراقية.... تجد فوقها مستشعر المسافة التي تفصل الباب عن الشخص القادم.... مستشعر المسافة يعمل بواسطة اﻷشعة الحمراء.
3. ينفتح الماء تلقائيا لإطفاء الحرائق.... ﻷن المبنى مزود بمستشعرات الحرارة أو الدخان.... إذا زادت درجة الحرارة عن المستوى المعقول أو زاد الدخان عن النسبة المعقولة فسيتم تنشيط هذه المستشعرات وستسمح للماء بالمرور ….
4. تعمل المصابيح العمومية بمسشعرات الضوء.
5. ويتبع الصاروخ الطائرة ﻷنه مزود بمستشعر الحرارة.
6. أما الرادار فابحث عنها بنفسك....
لا داعي ﻷن تفكر في كيفية صنع هذه المستشعرات الآن، ﻷنها متوفرة في المحلات التجارية الاليكترونية... قد يكون ثمنها بأبخس اﻷثمان وقد يكون غاليا شيئا ما حسب نوع المستشعر الذي تريده.
ماذا عن البرمجة؟
هو موضوع يومنا هذا. ولن أتطرق لبرمجة كل مستشعر على حدى... فالذكي بالغمزة والغبي بالدبزة.
ما الذي ستحتاجه في هذا الدرس
هذه لن نستغني عنها.
|
وهذا أيضا.
|
نريد حوالي 5 صمامات ضوئيةLED
|
زر (سواءا كان بأربع أرجل أو باثنين)
مهمته هو ايصال الكهرباء عند الضغط عليه. نسميه "مستشعر الضغط"
|
نحتاج لثلاث أنواع من المقاومات:
مقاومة واحدة تتراوح قيمتها بين 20 أوم و220 أوم
5 مقاومات تتراوح قيمها بين 300 أوم و 2 كيلو أوم
مقاومة واحدة تتراوح قيمتها بين 5 كيلوأوم و100 كيلوأوم
|
نصيحة
إذا تعذر ولم تجد صمامات ضوئية أو مقاومات أو أي كان من هذه الاحتياجات فقم بالبحث عن جهاز اليكتروني غير مستعمل وابحث في مركباته الاليكترونية وخذها منه. وإلا، فكسر جهازا عندك أو عند والديك وخذ ما تحتاجه وارحنا.
مستشعر الضغط
تعريف
مستشعر الضغط تبدو كلمة معقدة!!! لا عليك، انما هو عبارة عن زر كهربائي فقط أو بالأحرى انما هو قاطع تيار، بسيطة!!!!
يعمل هذا الزر كما هو موضح في الصور:
|
عندما يتم الضغط على الزر الكهربائي (أي مستشعر الضغط أو قاطع التيار) فسيتم غلق الدارة الكهربائية ويشتعل المصباح. لماذا نقول عنه مستشعر الضغط؟ لأنه وبكل بساطة يستشعر ضغط الانسان عليه فيوصل الدارة الكهربائية. وهذا تقريبا عمل كل المستشعرات الاليكترونية حيث تنبني على نفس المبدأ. |
على أي، رغم أن هذا المركب الاليكتروني يحمل أربعة أطراف إلا أن كل طرفين متصلين داخليا. وبالتالي كأنه عندك مربطين فقط واحد في الأعلى والآخر في الأسفل.
|
تركيب
أولا وقبل كل شيء، من المستحسن التأكد من جميع المركبات الاليكترونية عن طريق ايصال بعضها ببعض بواسطة دارة كهربائية. قم بإنجاز الدارة التالية، وبعدها صل بطاقة Arduino بالحاسوب حتى يتم مرور الكهرباء إليها.
| |
البرمجة
تقديم
بعدما تم التأكد من أن مركباتنا هذه تعمل بكفاءة، سنتطرق الآن الى اللعب بها برمجيا.
كنا من قبل قد جعلنا بطاقة Arduino تقوم بارسال تعليمات الى الصمام الضوئي حتى يشتعل وينطفئ.
أما الآن فنريد من بطاقة Arduino أن تستقبل أوامر من المستشعر الاليكتروني (الزر الكهربائي).
يمثل الصمام الضوئي مخرجا(بالانجليزية output) أي مخرج الأوامر القادمة من البطاقة Arduino فيتم بذلك اشتعال أو انطفاء الصمام.
ويمثل الزر الكهربائي مدخلا) بالانجليزية input) أي يتم ادخال أوامر الى البطاقة Arduino انطلاقا من الضغط عليه.
تركيب الدارة الكهربائية
الشيفرة
/*
* شيفرة مستشعر ضغط وصمام ضوئي
*/
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 آخر الى الدارة الكهربائية كما هو مبين في الخطاطة. ثم، قم بتغيير الشيفرة بحيث إذا تم الضغط على الزر يشتعل صمام واحد ويبقى اﻵخر منطفأ، وإلا إذا لم يتم الضغط على الزر ينطفئ اﻷو ويشتعل الثاني.
|