لغة برمجة الاردوينو : اساسيات لغة السي بلس بلس و السي

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

 اساسيات لغة السي بلس بلس و السي و لغة برمجة الاردوينو

الحديث عن البرمجة بصفة عامة

البرمجة في عصرنا الحالي موجودة في كل مكان. و من الصعب التفكير في عالمنا بدون برمجة. فإذا نظرنا إلى محيطنا سنجد أن كل شيء مبرمج. فالحاسوب الذي تستعمله مبرمج, و المتصفح كذلك مبرمج, الويندوز كذلك هو عبارة عن برمجة. الراديو, التلفاز,الساعة الرقمية, الهاتف, صفحات الويب… كلها برامج في واقع الأمر.لكن كل منها مبرمجة بلغة معينة. ولذلك تعددت لغات البرمجة. و ما يهمنا نحن الآن هو لغة برمجة الأردوينو, و التي ترتكز أساسا على لغة السي بلس بلس و السي كما قلنا في الدرس الأول من دورة الاردوينو.

تعريف البرمجة عامة و برمجة الاردوينو خاصة

يمكن أن نعرف البرمجة على أنها مجموعة تعليمات أو أوامر تعطى للمراقب. و المراقب يمكن أن يكون حاسوبا أو أي جهاز آخر قائم على متحكم دقيق أو على معالج. وهدف هذه التعلميات هو توجيه المراقب للقيام بسلسلة من الأعمال (مخارج) انطلاقا من بعض المعلومات الواردة (مداخل).

طبعا سنأخذ مثالا واقعيا و بسيطا على لغة برمجة الاردوينو  لكي نفهم أكثر هذا التعريف. فمن المؤكد أن أغلبكم لم يفهم هذا التعريف الممل, خاصة من ليس لديه دراية بعلوم البرمجة. مثالنا كالآتي : فلنفرض أننا نريد كتابة برنامج أردوينو يقوم بإشعال صمام مشع عندما نضغط على زر. و أول سؤال تطرحه كمبرمج اردوينو محترف 🙂 هو : ما هي المداخل و المخارج في مثالنا هذا ؟

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

ومن المداخل كذلك نذكر المقاطع و الازرار بانواعها و الحساسات بانواعها و من المخارج نذكر الصمامات المشعة و المحركات بانواعها…

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

حاولت في الرسم البياني التالي أن ألخص ما قلناه حول تعريف برمجة الأردوينو

لغة برمجة الاردوينو : اساسيات لغة السي بلس بلس و السي

و ما سأحرص عليه في ما بقي من هذه المقالة و المقالات القادمة إن شاء الله هو أن أقدم أمثلة حية لأغلب التعليمات حتى نفهم الهدف من كل تعليمة أردوينو.

 اساسيات لغة السي بلس بلس و السي و لغة برمجة الاردوينو

البنية الأساسية لكود أردوينو

ينقسم كود الأردوينو إلى ثلاث أقسام أساسية, و أي برنامج أردوينو نكتبه يجب أن يتكون أساسا من هذه الأقسام الثلاثة.

1- قسم إعلان المتغيرات

;int Variable1 = 56

في المثال أعلان قمنا بإعلان متغير إسمه Variable1 و أعطيناه قيمة 56. سنرى في الدرس القادم إن شاء الله إستعمال في مثال حي لإعلان المتغيرات.

2- قسم تهيئة المدخلات والمخرجات

()void setup
هنا نقوم بتهيئة المدخلات والمخرجات
}

3- قسم الكود الرئيسي المكرر

()void loop
{
هنا يوضع الكود الرئيسي الذي سيقوم الاردوينو بقرائته مرارا و تكرارا
}
التعليقات في كود الاردوينو
من أجل إضافة تعليقات في برنامج أردوينو من أجل توضيح الكود أو تذكير أنفسنا ببعض المعلومات أو الملاحظات يمكننا ببساطة كتابة سلاش مرتين « // » من أجل كتابة تعليق في نفس الخط. أما إن كان التعليق يحتوي على أكثر من خط فيمكننا إستعمال سلاش متبوع بنجمة « /* » ثم كتابة الفقرة التعليقية ثم نجمة متبوعة بسلاش « */ ».طبعا التعليق لا يؤثر على البرنامج.
 المتغيرات
أنواع المتغيرات الاكثر استعمالا:
يمكن أن يكون المتغير رقما أو مجموعة من الحروف أو قيمة منطقية أي تحمل إحدى القيمتين True او False.
امثلة:
;int x = 42     
;boolean Boole = TRUE  
;float a = 6.66 
 إعطاء قيمة للمتغيرات بعد إعلانها طبعا:
في التعليمة التالية سنقوم بإعطاء قيمة قيمة 5  للمتغير العددي x
;intx = 5
في التعليمتين التاليتين سنعطي المتغير y قيمة 5 ثم سنضيف لهذه القيمة 2 اي أن قيمة y بعد هذين التعليمتين ستكون 7.
;inty = 42
;int y = y+2
ملاحظة : أظن أنكم لاحظتم إضافة الفاصلة مع النقطة بعد نهاية كل تعليمة.فهذا ضروري و إن نسيتها فإن برنامج الاردوينو سيعلمك بخطإ في الكود.
العبارات الشرطية 
العبارات الشرطية هي من أهم الدالات في اساسيات لغة السي بلس بلس و السي و لغة برمجة الاردوينو.
 1- الدالة if
(if(Bouton==HIGH
  }
 ;(digitalWrite(13,HIGH
 {
 في الكود أعلاه إستعمال بسيط للدالة if و معناه إذا كان المتغير Bouton  يحمل القيمة HIGH فيجب أن ياخذ المخرج 13 القيمة HIGH. سوف نعرف أكثر عن القيمة HIGH و LOW في الدرس القادم إن شاء الله الخاص بالمنافذ الرقمية.المطلوب في هذا الدرس الآن أن نفهم الدالة if.
2- الدالة switch/case
 هذه الدالة لها نفس وظيفة الدالة if لكن الدالة switch/case تستعمل عادة عندما يكثر عدد الشروط و نتائج الشروط.
مثال:
(switch(Variable
}
 : case42
هنا نكتب النتيجة التي نريدها حين تكون قيمة المتغير Variable هي 42
    ;break
  :case666
هنا نكتب النتيجة التي نريدها حين تكون قيمة المتغير Variable هي 666
    ;break
default
هنا نكتب النتيجة التي نريدها حين تكون قيمة المتغير Variable مختلفة عن 42 و 666
{
الدالة while
  (while (compteur<10
}
   ;++compteur
 { 
أولا نفهم معنى الدالة ++, هذه الدالة تعني إضافة 1 للمتغير الذي يسبقها في حالتنا هذه تعني إضافة 1 إلى المتغير compteur يمكن أن نكتب هذه التعليمة بهذه الطريقة ؛compteur=compteur+1.
إذا نعود إلى الدالة while, الكود أعلاه يعني إضافة 1 إلى المتغير compteur اذا كانت قيمة compteur اصغر من 10 و ستتكرر هذه العملية و لن نخرج من هذا الكود بين المعقفين { } إلا في حالة عدم تحقق الشرط بين القوسين اي في حالتنا الاردوينو سينفذ التعليمة ;++compteur و لن ينفذ غيرها إلا إذا كانت قيمة compteur أكبر من 10.
 الدالة for
(++for(i=0;i<100;i
  }
 ;(Serial.println(i 
 ;(delay(1000      
 {
 أولا لدينا تعليمات اردوينو جديدة في هذا الكود فلنفهم معناها. التعليمة الأولى ;(Serial.println(i تعني أظهر لنا على الشاشة قيمة المتغير i. و التعليمة الثانية ;(delay(1000 تعني ببساطة “لا تفعل شيء لمدة ثانية (1000 ميكروثانية)”.
و البنسبة للدالة for فإن هذا الكود أعلاه يعني إعادة الدالتين وسط المعقفين 100 مرة و في كل مرة يضيف 1 إلى المتغير i و في المرة الأولى التي ينفذ الاردوينو التعليمتين تكون قيمة i هي 0. اي بعبارة أخرى عندما ننظر إلى الشاشة سوف نرى رقم 0 ثم بعد ثانية نرى رقم 1 وبعد ثانية أخرى نرى رقم 2 وهكذا دواليك إلى نصل إلى الرقم 99 فيتوقف الاردوينو عن تنفيذ التعليمتين داخل المعقفين { } و يخرج من هذا التكرار.
الوظائف Functions
يمكن أن نعتبر الوظائف في البرمجة و سيلة لتوضيح الكود و تسهيله.ولنضرب مثالا لنفهم أكثر دور الوظائف في كود الاردوينو:
نفرض مثلا أنك تقوم ببرمجة روبوت اردوينو, و من أجل أن تعطي أمرا للروبوت بالدوران إلى اليمين يجب أن تكتب عدة تعليمات.لكن ماذا لو أنك تحتاج لجعل الروبوت يدور على اليمين في العديد من الحالات. و هذا يعني أنك ستكتب التعليمات الخاصة بجعل الروبوت يدور الى اليمين عديد المرات في الكود الخاص بك. و هذا يعني أن الكود صار طويلا جدا و معقدا. و هنا يأتي دور الوظائف Functions . حيث أنه يمكنك كتابة التعليمات الخاصة بالدوران إلى اليمين مرة واحدة فقط داخل الوظيفة التي نسميها مثلا turn_right ثم نقوم بطلب هذه الوظيفة كلما احتجنا الدوران إلى اليمين.أي اننا عوضنا مجموعة التعليمات الخاصة بالدوران لليمين بتعليمة واحدة و هي التعليمة التي تطلب وظيفتنا.
1- اعلان الوظيفة في كود اردوينو
مثال للاعلان عن وظيفة إسمها Turnright
()int Turnright
}
هنا نكتب التعليمات الخاصة بوظيفتنا. و في مثالنا نكتب التعليمات الخاصة بجعل الروبوت يدور نحو اليمين.
{
2-طلب الوظيفة في برمجة الاردوينو
من أجل طلب الوظيفة في برنامج الاردوينو الخاص بنا يكفي أن نكتب التعليمة التالية عوض كتابة كل التعليمات التي كتبناها داخل إعلان الوظيفة.
;()Turnright
ملاحظة يمكننا كذلك إضافة متغيرات داخل القوسين من أجل إستعمالها داخل الوظيفة.
و هكذا نكون قد تعرفنا على بعض اساسيات لغة السي بلس بلس و السي و لغة برمجة الاردوينو.
و في نهاية هذا الدرس الطويل مقارنة بالدروس الأخرى من دورة الاردوينو. أريد أن أنوه بأن من درس البرمجة او له دراية بها فإنه لن يجد صعوبة في فهم هذا الدرس ” لغة برمجة الاردوينو “. و في المقابل من المؤكد كذلك أن هناك من وجد صعوبة في فهم الدرس, لكني أؤكد أن الدرسين القادمين سيكونان أسهل بإذن الله و الأهم أن الدروس القادمة ستكون تطبيقية أكثر.
لا تنسونا بدعوة صالحة, أخوكم صابر سعيد.

4 تعليقات

تعليقك مهم

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *