لا شك أنّ البرمجة هي الجزء الأهم في مشروعك، بل البرمجة هي الشيء الأهم في حياتنا اليومية، في عصرنا الحالي أصبحت البرمجة تحيط بنا من كل الاتجاهات، فالحاسوب أو الهاتف الذكي الذي تقرأ منه مقالنا الآن مُبرمج، بل المتصفح نفسه الذي وصلت من خلاله لأراجيك فهو مُبرمج، وكذلك الويندوز أو الـ Linux الذي يمكنك من خلاله استخدام حاسوبك فهو في الأساس عبارة عن أكواد برمجية.
أضف على ذلك كل الأجهزة التي تتعامل معها يوميًا والتطبيقات الموجودة بهاتفك في الواقع كلها برامج، ولكن كل منها مُبرمج بلغة معينة، وبناءً على ذلك تعددت لغات البرمجة ولكن ما يهمنا في مقالنا اليوم هي لغة برمجة الاردوينو والتي تحمل اسم “Arduino C”.
معلومات عن كل ما يخص لغة الاردونيو
Arduino عبارة عن منصة نماذج إلكترونية مفتوحة المصدر تمكن المستخدمين من بناء مشاريع إلكترونية تفاعلية. تتكون منصة Arduino من مكونات الأجهزة والبرامج. مكون الأجهزة عبارة عن لوحة تحكم دقيقة بسيطة ، بينما يشتمل مكون البرنامج على بيئة التطوير المتكاملة Arduino (IDE) ولغة برمجة Arduino.
لغة برمجة Arduino هي نسخة مبسطة من C و C ++ مصممة خصيصًا لمنصة Arduino. إنها لغة عالية المستوى تتيح للمستخدمين كتابة البرامج التي تتفاعل مع أجهزة لوحة وحدة التحكم الدقيقة. تتضمن اللغة مجموعة من المكتبات التي توفر وظائف مضمنة لمهام مثل التحكم في المسامير الرقمية والتناظرية للوحة ، والتواصل مع المستشعرات والأجهزة الأخرى ، والتفاعل مع شاشات LCD.
من السمات الرئيسية للغة برمجة اردونيو بساطتها. اللغة سهلة التعلم ولا تتطلب مهارات برمجة متقدمة. هذا يجعله في متناول مجموعة واسعة من المستخدمين ، بما في ذلك المستخدمين المبتدئين وغير التقنيين.
تتضمن اللغة أيضًا عددًا من الميزات التي تسهل العمل مع أجهزة Arduino. على سبيل المثال ، يوفر مجموعة من المتغيرات المحددة مسبقًا التي تسمح للمستخدمين بالوصول إلى الدبابيس المختلفة على اللوحة دون الحاجة إلى كتابة تعليمات برمجية معقدة. تتضمن اللغة أيضًا مجموعة من الوظائف التي تبسط المهام مثل قراءة بيانات المستشعر والتحكم في إخراج اللوحة.
تعد لغة برمجة Arduino متعددة الاستخدامات ويمكن استخدامها لإنشاء مجموعة واسعة من المشاريع ، من شاشات LED البسيطة إلى الروبوتات المعقدة وأنظمة التشغيل الآلي. كما أنها قابلة للتخصيص بدرجة كبيرة ، مما يسمح للمستخدمين بتعديل اللغة وتوسيعها لتناسب احتياجاتهم الخاصة.
بشكل عام ، تعد لغة برمجة Arduino أداة قوية وسهلة الاستخدام تمكن المستخدمين من إنشاء مجموعة واسعة من المشاريع الإلكترونية التفاعلية. تجعله بساطته وتعدد استخداماته خيارًا مثاليًا للهواة والطلاب والمهنيين على حدٍ سواء.
“من علمني أساسيات البرمجة كان دائمًا يردد عبارة واحدة لكي تُبرمج ما تريد، ضع المشكلة وحلولها “Inputs, Outputs” في “Flowchart” وستجد الحل”
“Flowchart” هو عبارة عن تمثيل تخطيطي للخوارزمية “Algorithm”، مخطط انسيابي مفيد جدًا في كتابة البرنامج وشرح البرنامج للآخرين.
دعنا نوضح بمثال بسيط أنّنا نريد كتابة برنامج للاردوينو حتى يقوم بإشعال صمام ثنائي باعث للضوء “LED” عندما نضغط على زر، ليكن أول سؤال تطرحه على نفسك ما هي”Inputs” و “Outputs” في مثالنا هذا ؟
المدخل الوحيد لدينا هو الزر الذي سنضغط عليه، فالزر يمثل البيانات الداخلة بالنسبة لـ لوحة الاردوينو، والخرج سيظهر على الصمام في حالة ضوء أي أنّ إنارة الــ “LED” هي الخرج، ولكي يفهم الاردوينو ما نحن نريد لابد أن نفهم لغته بمعرفة الدوال والمتغيرات بها حتى نكتب له ما نريده.
ما هي الخمس خطوات التي إذا اتبعتها سوف تتمكن من برمجة الاردوينو؟
الخطوة الأولى: البدء مع بيئة تطوير الاردوينو “Arduino IDE”
تعتبر بيئة التطوير والتي تحمل اسم “Arduino IDE” هي الأداة التي يتم بها كتابة أكواد البرمجة بلغة “Arduino C”، ومن ثم تحويلها إلى صيغة تنفيذية ورفعها إلى المتحكمة الدقيقة “Micro Controller” الموجودة على الاردوينو.
تتميز “Arduino IDE” بالبساطة الشديدة حيث أنّ التعامل معها يخلو من أي تعقيد، حيث أنّها تحتوي على كل ما يحتاجه المُبرمج لتطوير برامج بلغة الاردوينو سي، وتُستخدم في نفس الوقت لرفع البرنامج مباشرةً إلى المتحكمة الدقيقة دون الحاجة لوسيط من أجل رفع البرنامج للبوردة.
مبدئيًا سنقوم بشرح بيئة تطوير الاردوينو “Arduino IDE” للنسخة العاملة بنظام التشغيل Microsoft windows، باعتباره هو أكثر أنظمة التشغيل انتشارًا بين المستخدمين، ولكنه بالتأكيد هي متوفرة لكل أنظمة التشغيل.
تنزيل بيئة تطوير الاردوينو “Arduino IDE”
لاشك أنّ بيئة التطوير البرمجية متوفرة لكل أنظمة التشغيل windows, Linux, MAC، ويُمكنك تحميلها من الموقع الرسمي لمطوري الاردوينو على الرابط التالي: https://www.arduino.cc/en/Main/Software
بعد تحميل الملف من الموقع لن تجد أي صعوبة في تنصيبه على جهازك.
بعد الانتهاء من تنصيب بيئة الاردوينو على جهازك سنحتاج للقيام ببعض الخطوات قبل بدء كتابة البرنامج؛ لكي نتمكن من توصيل بوردة الاردوينو بجهازك:
1- قم بتوصيل كابل الـ USB بالبورة وتوصيل الطرف الآخر بفتحة USB الموجودة بحاسوبك، وانتظر حتى يتعرف الجهاز على قطعة الهاروير الجديدة “Found Arduino UNO Board” بعد ظهور هذه الرسالة يمكنك بدء العمل على البيئة التطويرية.
الخطوة الثانية: التعرف على الواجهة الرسومية لبيئة التطوير التي تحمل اسم الـ “Sketch file”
هو الأداة التي يكتب فيها الكود بلغة اردوينو سي المراد تنزيله على الاردوينو، وأول خطوة نقم بها عليها هي اختيار البوردة التي سنتعامل بها، لذلك سنذهب لقائمة Tools ونختار board ومنها نختار بوردة Arduino UNO كما في الصورة …
ومن ثم سنقوم باختيار المنفذ التسلسلي الخاص بالاتصال مع اردوينو “Choosing a Serial Port”
من الأشياء التي يجب التركيز عليها في عملية برمجة اردوينو هو تحديد المنفذ التسلسلي، والذي يتم من خلاله الاتصال مع بوردة الاردوينو، من قائمة Tools نختار Serial Port، ثم اختيار المنفذ الموجود عليه كما في الصورة
لحفظ مشروع تم كتابته اختار ملف ثم حفظ …”Save the project by choosing File >>>Save from the menu”
التحقق من صحة الكود (Testing the Code)
تحقق من صحة الكود وخلوه من الأخطاء أولًا قبل أن ترسل الكود إلى لوحة Arduino لكي يتم تنفيذه، انقر على Sketch ثم Verify/Compile.
الخطوة الثالثة: التعرف على المتغيرات المُستخدمة داخل الكود “Variables”
- الرقم “Int”
“Int” اختصار لـ Integers وهي الأرقام النوع الأول من الداتا المستخدمه في كتابة الكود في الاردوينو اونو، القيمة التخزينة للأرقام عبارة عن “2 Byte = 16 Bit” ويتم التعبير عنها كالتالي
Const int LED = 12;
يقوم هذا الأمر بعمل Constant”” ثابت قيمته تساوي 12 واسمه LED، ليطرح هنا سؤال نفسه لماذا استخدمنا الثابت هكذا؟ استخدمنا الثوابت هنا لتُسهل علينا تحديد المداخل والمخارج “Inputs , Outputs pins” للمتحكمة الدقيقة الموجودة على الاردوينو، فمثلًا في الأمر السابق عرفنا ثابت وهو الـ Pin رقم 12 احتمال نستخدمها كمدخل أو مخرج حسب الجاحة لها.
- الحرف “Char”
“Char” اختصار “character” الحرف وهو نوع الداتا التي تخزن في الذاكرة بمساحة “1Byte = 8Bit”، وهناك حالات يُمكن أنّ يُحَزن فيها الحرف في الذاكرة في صورة أرقام، وهذا يحدث عند استخدام نوع من الشفرة يسمى “ASCII chart” هذا النوع يستخدم عندما نريد إجراء عمليات حسابية على الحروف مثل ذلك:
(‘A’ + 1 has the value 66) في هذه الحالة يعني الحرف A قيمته 65، لذلك إذا كتبنا في الكود
char myChar = ‘A’;
char myChar = 65; // both are equivalent
- الكلمة (Word)
الكلمة تُخَزن في مساحة 16Bit أي من 0 إلى 65535 ما يساوي 2^0 إلى 2^15 على سبيل المثال يمكنك أن تكتب الكلمة داخل الكود بهذا الشكل:
word w = 10000;
- الرقم العشري “Float”
الرقم العشري يُخزن في مساحة 4Byte، ويُستخدم عادةً مع التطبيقات التناظرية مثل قراءة قيم الحساسات مثل حساس الحرارة، الرطوبة، المسافة وغيره ويمكن التعبير عنه كالتالي:
float myfloat;
float sensorCalbrate = 1.117;
الخطوة الرابعة: التعرف على الدوال المُستخدمة داخل الكود “Functions”
الدوال تُستخدم لتجزئة الكود، حيث يقوم الكود بعدد من الوظائف والتي تَسمح للمُبرمج بوضع أفكاره، ومايريد الوصول إليه داخل الكود، وسنجد الدوال أنواع، يوجد دالة يمكن من خلالها تنفيذ مهمة ما محددة ثم تعود إلى باقي الكود وتنفيذه، ويمكن لدالة أخرى تنفيد جزء ما عدة مرات داخل البرنامج ويسمى هنا “Loop”.
يتألف الكود من دالتين:
الأولى:
void setup() {
pinMode(12, OUTPUT);
}
دالة إعداد “setup” يتم تنفيذها عند تشغيل الميكروكنترولر، من مهامها:
- تُنَفذ مرة واحدة فقط
- يتم تعريف المتغيرات فيها
- يتم تعريف المداخل والمخارج المستخدمة داخل الكود حسب وجودها على الهاردوير فيها.
الثانية:
void loop() {
if ( incomingByte == 65){
digitalWrite(13, HIGH);}
else if ( incomingByte == 97){
digitalWrite(13, LOW); }
}
دالة الحلقة “loop ” ويظل البرنامج يدور فيها ويعيد تنفيذها مرة بعد مرة حسب الرغبة لحين تَحقق شرط ما ليخرج منها، وينفذ ما بعدها.
PinMode (pinNumber, mode)-
والغرض منها تحديد حالة الطرف المستخدم على البوردة ،setup () هي دالة تستخدم خلال pinMode
بمعنى أثناء توصيلك للدائرة هل تم توصيلها على هيئة أنّها مدخل أم مخرج داخل، ستأخد من عليها قراءة وتكون مخرج، أم أنّ الاردوينو سيأخد منها قراءة وتكون مدخل بيانات له
(مثال)
كل طرف على لوحة الاردوينو يحمل رقم محدد فعند كتابة هذه الدالة يتطلب منك تحديد رقم الطرف المُستخدم، ثم تحديد حالته هل هو مدخل أم مخرج
pinMode(ledPin, OUTPUT);
pinMode(13, OUTPUT);
وهذه الدالة يفهمها الاردوينو أنّ الطرف رقم 13 سوف يكون مخرج تُأخذ من عليه قراءات.
الخطوة الخامسة: تحميل البرنامج على بوردة الاردوينو “Upload to board”
هذه الخطوة تقوم بها بعد الانتهاء من كتابة الكود والتحقق من صحته، تتم بشكل بسيط من خلال النقر على زر التحميل، وانتظر بضع ثواني، حتى تُشاهد وميض الدايود الضوئي RX و TX في لوحة الاردوينو، وستظهر لك رسالة “تم التحميل” في حالة تم التحميل بنجاح، لتأخد بعدها لوحة الاردوينو وتوصلها داخل مشروعك وتضغط تشغيل.
ستجد داخل بيئة التطوير “Arduino IDE” تاب يحمل اسم Sketch إذا ضغط عليه ستصل لمكتبة اردوينو “Arduino Library”:
ستجد بها مجموعة من الأكواد البرمجية “Codes” الجاهزة التي ستحتاجها من أجل بناء مشاريعك، أو التي ستحتاجها قطعة Arduino لتعريفات بنية الهاردوير “Hardware” والتي يمكنك من خلالها التعرف على الأكواد البرمجية وكيفية كتابتها؟
انتظروا المقال القادم الذي سنتعلم فيه الاتصال التسلسلي “Serial Interface” وكيف يتم استخدامه في كتابة الكود، وما الدوال المُستخدمة له؟، وسيكون المقال التابع له عبارة عن مشروع كامل يمكنك التحكم فيه من خلال هاتفك الذكي، وسنشرح فيه المكونات المطلوبة وكيف تتعامل معها لتوصل دائرة كاملة؟ مع كود الاردوينو الذي يُمكنك من التحكم في الدائرة.
* نقدم من منصة معارف : دورات تدريبية في البرمجة