- إنضم
- 30 أبريل 2010
- المشاركات
- 1,227
- مستوى التفاعل
- 130
بنية لغة برمجة أردوينو الدرس الثالث
بنية لغة برمجة أردوينو
تخضع الشيفرة في لغة أردوينو إلى بعض التعديلات البسيطة ثم تمرَّر إلى مفسِّر ++C/C. يمكن استعمال جميع البنى والتعابير القياسية في لغة C أو ++C التي يدعمها المفسِّر في أردوينو. لن تجد في شيفرة أردوينو الدالة Main()المعتادة ولكن ستجد عوضًا عنها دالتين رئيسين هما: الدالة setup() والدالة loop() اللتان تفسران وتوصلان بالدالة الرئيسيةmain()
انظر إلى الشيفرة التالية التي تمثِّل بنية لغة أردوينو:
ستستدعى الدالة setup() متى ما شُغلَت لوحة أروينو أو أعيد ضبطها بالضغط على الزر reset؛ تُستعمَل لتعريف المتغيرات وضبط أوضاع الأرجل وتهئية المكتبات المراد استعمالها في الشيفرة وغيرها من الأمور. أمَّا الدالة loop()، فتُستدعَى بعد اكتمال تنفيذ الدالة setup() وخروجها وتنفَّذ بشكل متكرر في البرنامج الرئيسي (main()). تتحكم هذه الدالة باللوحة حتى اطفائها أو إعادة ضبطها بالضغط على الزر reset.
- البنية الأولية للشيفرة
لابد لكل شيفرة من شيفرات أردوينو أن تحوي الدالتين التاليتين:
1. الدالة setup ()
تستدعى الدالة setup() أولًا عند البدء بتنفيذ الشيفرة (المخطط [sketch] كما تُطلِق عليه أردوينو)، إذ تُستَعمل لتهيئة المتغيرات، وأوضاع الأرجل، وواجهات التخاطب، والبدء باستعمال المكتبات ...إلخ. انتبه إلى أنَّ الدالة setup() ستُنفَّذ مرةً واحدةً فقط بعد تشغيل لوحة أردوينو أو تصفيرها (reset).
- البنية العامة
- أمثلة
مثالٌ على تهيئة وبدء واجهة التخاطب التسلسلية وتهيئة الرجل 3 لتصبح في وضع الإدخال:
2. الدالة loop()
بعد إنشاء الدالة setup() التي تهيئ وتضبط القيم الأولية المراد استعمالها، تعمل الدالة loop() على «تكرار» الشيفرة المكتوبة بداخلها -كما يشير اسمها بالضبط- على التوالي متيحةً بذلك لبرنامجك بالتحكم بلوحة أردوينو والتغيُّر والاستجابة للبيئة والعناصر المرتبطة بها.
- البنية العامة
- أمثلة
مثالٌ على ربط زرٍ بالرجل 3 وإرسال الحرف "H" عند ضغطه أو الحرف "L" كل ثانية عبر واجهة التخاطب التسلسلية:
تخضع الشيفرة في لغة أردوينو إلى بعض التعديلات البسيطة ثم تمرَّر إلى مفسِّر ++C/C. يمكن استعمال جميع البنى والتعابير القياسية في لغة C أو ++C التي يدعمها المفسِّر في أردوينو. لن تجد في شيفرة أردوينو الدالة Main()المعتادة ولكن ستجد عوضًا عنها دالتين رئيسين هما: الدالة setup() والدالة loop() اللتان تفسران وتوصلان بالدالة الرئيسيةmain()
انظر إلى الشيفرة التالية التي تمثِّل بنية لغة أردوينو:
C++:
#define LED_PIN 13 // تسمية الرجل 13 المتصلة بضوء ليد
void setup() {
pinMode(LED_PIN, OUTPUT); // ضبط الرجل 13 لتصبح رجل خرج
}
void loop() {
digitalWrite(LED_PIN, HIGH); // تشغيل ضوء الليد
delay(1000); // الانتظاء لمدة ثانية واحدة
digitalWrite(LED_PIN, LOW); // إطفاء ضوء الليد
delay(1000); // الانتظار لمدة ثانية واحدة
}
ستستدعى الدالة setup() متى ما شُغلَت لوحة أروينو أو أعيد ضبطها بالضغط على الزر reset؛ تُستعمَل لتعريف المتغيرات وضبط أوضاع الأرجل وتهئية المكتبات المراد استعمالها في الشيفرة وغيرها من الأمور. أمَّا الدالة loop()، فتُستدعَى بعد اكتمال تنفيذ الدالة setup() وخروجها وتنفَّذ بشكل متكرر في البرنامج الرئيسي (main()). تتحكم هذه الدالة باللوحة حتى اطفائها أو إعادة ضبطها بالضغط على الزر reset.
- البنية الأولية للشيفرة
لابد لكل شيفرة من شيفرات أردوينو أن تحوي الدالتين التاليتين:
1. الدالة setup ()
تستدعى الدالة setup() أولًا عند البدء بتنفيذ الشيفرة (المخطط [sketch] كما تُطلِق عليه أردوينو)، إذ تُستَعمل لتهيئة المتغيرات، وأوضاع الأرجل، وواجهات التخاطب، والبدء باستعمال المكتبات ...إلخ. انتبه إلى أنَّ الدالة setup() ستُنفَّذ مرةً واحدةً فقط بعد تشغيل لوحة أردوينو أو تصفيرها (reset).
- البنية العامة
كود:
void setup()
{
// تهيَّأ هنا المتغيرات والأرجل وواجهات التخاطب والمكتبات ...إلخ
}
- أمثلة
مثالٌ على تهيئة وبدء واجهة التخاطب التسلسلية وتهيئة الرجل 3 لتصبح في وضع الإدخال:
كود:
int buttonPin = 3;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
void loop()
{
// ...
}
2. الدالة loop()
بعد إنشاء الدالة setup() التي تهيئ وتضبط القيم الأولية المراد استعمالها، تعمل الدالة loop() على «تكرار» الشيفرة المكتوبة بداخلها -كما يشير اسمها بالضبط- على التوالي متيحةً بذلك لبرنامجك بالتحكم بلوحة أردوينو والتغيُّر والاستجابة للبيئة والعناصر المرتبطة بها.
- البنية العامة
كود:
oid loop()
{
// تكتب الشيفرة المراد تكرارها هنا
}
- أمثلة
مثالٌ على ربط زرٍ بالرجل 3 وإرسال الحرف "H" عند ضغطه أو الحرف "L" كل ثانية عبر واجهة التخاطب التسلسلية:
كود:
int buttonPin = 3;
// واجهة التخاطب التسلسلية وزر الإدخال setup تهيئ الدالة
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
// من حالة الزر في كل فترة زمنية معينة loop تتحقق الدالة
// وسترسل رسالة معينة عبر واجهة التخاطب التسلسلية إن ضُغِط
void loop()
{
if (digitalRead(buttonPin) == HIGH)
Serial.write('H');
else
Serial.write('L');
delay(1000);
}