قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-03-2020, 07:51 PM المشاركة 1   
افتراضي دورة برمجة الاردوينو : الدرس الأول :بناء وتدفق برنامج "سكيتش" الاردوينو Twitter FaceBook Google+



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

بناء وتدفق برنامج "سكيتش" الاردوينو Arduino Sketch Structure and Flow :

في هذا الدرس من برمجة Arduino ، سوف نبحث فى البناء (الهيكل) الأساسي لبرنامج (سكيتش) الاردوينو وتنفيذ تعليمات البرنامج من أعلى إلى أسفل (تدفق أو سريان البرنامج program flow ).

أولا : بناء (هيكل) برنامج (سكيتش) الاردوينو Arduino Sketch Structure :

يتكون برنامج الاردوينو الأساسي من "دالتين" functions تسمى "دالة الإعداد " setup() و "دالة الحلقة" loop() .

• إفتح بيئة التطوير Arduino IDE وحدد File → Examples → 01.Basics → BareMinimum (BareMinimum تعنى الحد الأدنى) لرؤية الدالتين . تظهر هاتان الدالتان الآن في نافذة Arduino IDE جديدة .




ما هي الدالة Function ؟
سيتم تغطية الدوال بمزيد من التفصيل لاحقًا ، والآن ستحتاج فقط إلى معرفة ما يلي حول الدوال :
• يجب أن يكون لجميع الدوال اسم فريد ، و setup هو مثال على اسم الدالة الفريد(setup و loop هي دوال خاصة في برمجة Arduino وتشكل جزءًا من بناء الاسكيتش الأساسي).
• يتبع اسم الدالة بفتح وإغلاق الأقواس () التي قد تحتوي أو لا تحتوي على شيء.
• يجب أن يكون لجميع الدوال نوع إرجاع return type . لكل من setup و loop نوع الإرجاع "فارغ" void .
• يتكون جسم body الدالة من قوس فتح وإغلاق ({و}).

برنامجك الأول : عرض رسالة الترحيب "Hello, world!" :
من تقاليد البرمجة كتابة برنامج ترحيب "hello world" كلما بدأت في تعلم لغة برمجة جديدة.
برنامج "hello world" يكتب ببساطة النص "Hello, world!" على الشاشة. الغرض من هذا البرنامج هو التحقق من أن بيئة البرمجة الخاصة بك مثبتة وتعمل بشكل صحيح. إذا كان برنامج "hello world" يعمل ، فأنت مستعد لبدء تعلم لغة البرمجة الجديدة.
لا يحتوي Arduino على شاشة لكتابة النص "hello world" ، ولكن يمكننا استخدام منفذ USB ونافذة الشاشة التسلسلية serial monitor window .

1- كتابة البرنامج (الاسكتش) :
قم بتعديل البرنامج BareMinimum الذي قمت بفتحه مسبقًا كما يلي:

كود:
void setup() {
  Serial.begin(9600);
  Serial.println("Hello, world!");
}

void loop() {
}

احفظ البرنامج المعدل باسم hello_world في مجلد الاسكيتشات عن طريق تحديد File → Save As… من قائمة Arduino IDE ثم إعادة تسمية الملف إلى hello_world.

2- تشغيل البرنامج :
قم بتوصيل Arduino بجهاز الكمبيوتر الخاص بك باستخدام كابل USB. انقر فوق الزر تحميل Upload لتحميل البرنامج إلى Arduino.
• الآن افتح نافذة الشاشة التسلسلية Arduino IDE لرؤية تشغيل الاسكيتش وطباعة الرسالة النصية.
يجب أن تبدو نتيجة تشغيل الاسكيتش كما يلي:




يجب أن يكون النص الذي يخرجه البرنامج مرئيًا في نافذة الشاشة التسلسلية.

3- اكتشاف الأخطاء :
أ‌- أخطاء البرمجة (الترجمة) :
أي شيء في سطور التعليمات البرمجية أعلاه والذي يتم كتابته في نافذة IDE بشكل غير صحيح سيؤدي على الأرجح إلى خطأ في الترجمة ، لذا تأكد من كتابة كل شيء تمامًا كما هو موضح في الكود أعلاه. يتم ترجمة البرنامج عند النقر على الزر Verify "التحقق" (أيقونة علامة صح ) أو الزر Upload "التحميل" (أيقونة السهم الأفقي).
سيظهر خطأ في الترجمة في الجزء السفلي من Arduino IDE كما هو موضح في الصورة أدناه.




في هذا المثال ، تم ترك الفاصلة المنقوطة ( عند نهاية هذا السطر: Serial.println("Hello, world!") والذي تسبب في عرض Arduino IDE لرسالة الخطأ.

ب‌- أخطاء الإعداد Setup Faults :
إذا واجهتك مشاكل في تحميل uploading الاسكتش إلى Arduino ، فتأكد من تحديد لوحة Arduino الصحيحة ضمن Tools → Board ومن تحديد المنفذ التسلسلي الصحيح ضمن Tools → Serial Port.

ت‌- خطأ تحديد (ضبط) معدل البود Baud Rate Setting Fault :
إذا تم تحميل uploaded الاسكتش بنجاح ، فإن المشكلة الوحيدة التي يمكن أن تمنع ظهور النص في نافذة الشاشة التسلسلية هي إذا لم يتم ضبط معدل البود (سرعة نقل البيانات) في الجزء السفلي الأيمن من نافذة الشاشة التسلسلية على 9600 كما هو موضح في شكل تشغيل البرنامج أعلاه.

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

1- أجزاء الاسكتش Parts of a Sketch :
تظهر الصورة أدناه أجزاء سكيتش الاردوينو. "العبارات" Statements هي سطور الكود (التعليمات البرمجية) التي يتم تنفيذها أثناء تشغيل البرنامج. يتم إنهاء كل عبارة بفاصلة منقوطة ( .



2- كيف يعمل سكيتش (برنامج) Hello World
في برنامج Hello World ، يتم تشغيل العبارات في الدالة setup() أولاً ، من الأعلى إلى الأسفل. العبارة Serial.begin(9600); هي العبارة الأولى في الدالة setup() ، لذلك يتم تشغيلها أولاً. تقوم هذه العبارة بضبط سرعة المنفذ التسلسلي على 9600 بود. يجب أن يتطابق إعداد الاتصال بالبود في نافذة الشاشة التسلسلية مع هذه القيمة بحيث يتصل Arduino ونافذة الشاشة التسلسلية بنفس السرعة.
العبارة الثانية المطلوب تشغيلها في الدالة setup() هي Serial.println("Hello, world!"); والتى ترسل النص Hello, world! للخروج من المنفذ التسلسلي / USB للعرض في نافذة الشاشة التسلسلية. في هذه العبارة ، يمكن وضع أي نص بين علامتي التنصيص ("") وسيتم عرضه في نافذة الشاشة التسلسلية.

3- دالة الإعداد The setup() Function :
يتم تشغيل العبارات Statements في الدالة setup() مرة واحدة فقط ، في كل مرة يتم فيها تشغيل البرنامج . يبدأ البرنامج بعد ذلك في تنفيذ العبارات في الدالة loop() .
يتم تشغيل البرنامج بعد برمجته في Arduino. سيؤدي فتح نافذة الشاشة التسلسلية إلى إعادة تعيين (ريست reset ) Arduino ويؤدي إلى تشغيل البرنامج مرة أخرى.
يمكن أيضًا إعادة تشغيل البرنامج بالضغط على زر الإعادة reset على Arduino أو فصل ثم إعادة توصيل الطاقة للاردوينو Arduino.

4- دالة الحلقة The loop() Function :
سيتم تشغيل العبارات في الدالة loop() بشكل مستمر من أعلى إلى أسفل ثم تعود إلى الأعلى.
إذا كانت الدالة loop() تحتوي على عبارتين ، فسيتم تنفيذ العبارة الأولى ، ثم العبارة الثانية ، ثم العبارة الأولى مرة أخرى وهكذا في حلقة loop .
نظرًا لعدم وجود عبارات في الدالة loop() في مثال hello world الخاص بنا ، سينتهي تنفيذ البرنامج في الحلقة ويتعثر (يعلق) هناك ولا يفعل شيئًا.
من المهم أن يكون لديك الدالة loop() في البرنامج ، حتى لو كانت فارغة ، لأنه بدونها سيحاول المتحكم الدقيق الموجود على لوحة Arduino تنفيذ أي شيء يجده بعد ذلك في الذاكرة بعد أن تكون العبارات في الدالة setup() قد تم تنفيذها . سيحاول المتحكم تنفيذ كل ما يجد في الذاكرة كتعليمات ، ولكن الدالة loop() تمنعه من القيام بذلك عن طريق الحفاظ على تنفيذ البرنامج في الحلقة.
في الدرس التالي ، سنضع بعض عبارات البرنامج في الدالة loop() لمعرفة كيفية عملها.

اعلانات
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:37 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025