نسبر معكم في مقالنا هذا بعد تعلمنا في المقال السابق من هذه السلسة عن الأوردوينو وتاريخه، نأتي الآن لكيفية استعماله حيث يتطلب ذلك برمجة اللوحة لتنفيذ أي مشاريع، فهناك جزء المكونات الفعلية Hardware وهي اللوحة والقطع الإلكترونية المتصلة بها وجزء البرامج Software الذي سنُسْهِب بالحديث عنه في هذة المقالة.
بدايةً لبرمجة الأوردوينو هناك بيئة برمجية متكاملة تسمى Arduino IDE حيث ان البرنامج في هذه البيئة بلغة الأردوينو Arduino.
ماهي البيئة التطويرية للأردوينو Arduino IDE ؟
هي بيئة تطويرية تستخدم لبرمجة لوحة الأردوينو بلغة تسمى لغة الأردوينو Arduino . هذه اللغة مزيج من لغة C / C++ و تتضمن مكتبات يمكن تحميلها واستعمالها للتعامل مع مختلف الأجهزة التي يمكن استخدامها في مشاريع عدة، وطريقة تثبيت البرنامج تكون بعدة خطوات:
• أولًا: نكتب في محرك البحث Arduino
• ثانيًا: الدخول على موقع Arduino.
• ثالثًا: النقر على خانة Software
• رابعًا: النقر على نظام التشغيل الخاص بك
• خامسًا: النقر على just download
الآن وبعد تحميلنا للبيئة الخاصة بالأوردوينو وبعد فتحه ستظهر لنا واجهة البيئة التطويرية بهذا الشكل :
ما معنى void setup؟
هذه الدالة تُستخدم لإعداد المتغيرات و تهيئة الأجهزة قبل تنفيذ الشفرة وهي تُنفذ مرة واحدة فقط وهذا ما يجعلها مختلفة عن void loop ، ونأتي الآن إلى void loop هي دالة تحتوى على الشفرة التي تريدها أن تقوم بتشغيل الجهاز المرتبط باللوحة بشكل مستمر حيث أنها تنفذ الأوامر الموجودة بها طيلة عمل البرنامج .
لفهم الكلام السابق :
void setup() {
تهيئة المتغيرات والأجهزة
}
void loop() {
الشفرة التي يجب تنفيذها بشكل متكرر
}
والآن نأتي إلى أهم الدوال المستخدمة في البرامج، لنبدأ بدالة pinMood() لتغيير وضع المدخل/المخرج في اللوحة للتوضيح أكثر هناك ثلاثة أوضاع يمكن وصف حالة المدخل/المخرج بها :
- INPUT : يستخدم لإستقبال الإشارة من مصدر خارجي.
- OUTPUT : يتسخدم لإرسال إشارة إلى مصدر خارجي.
- INPUT_PULLUP : دبوس إدخال ولكن هنا يتم تفعيل مقاومة pull-up الداخلية.
هنا مثال لفهم هذه الدالة:
const int ledPin = 13; // تحديد رقم المدخل LED
void setup() {
pinMode(ledPin, OUTPUT); // تعيين المخرج LED كإخراج
}
void loop() {
digitalWrite(ledPin, HIGH); // تشغيل الضوء
delay(1000); // انتظار لمدة ثانية
digitalWrite(ledPin, LOW); // إيقاف الضوء
delay(1000); // انتظار لمدة ثانية
}
نتيجة هذه الشفرة هو تشغيل و إيقاف الضوء (LED) بالتناوب كل ثانية
والآن وبعد فهمنا لدالة (pinMood) لاحظنا في الشفرة السابقة كلمة digitalWrite مامعنى هذه الدالة وما هي وظيفتها ؟
تُعرّف digitalWrite بأنها دالة تستخدم لوضع حالة المخرج/المدخل pin سواء تشغيل HIGH أو إيقاف LOW كما رأينا يتم تحديد المخرج/المخرج pin وكتابة الحالة بعده.
ورأينا أيضًا كلمة delay ماذا تعني وماهي وظيفتها في الشفرة ؟
دالة delay هي دالة تستخدم لإيقاف الشفرة لمدة ميلي ثانية مايعني أن 1000 ميلي ثانية هو إيقاف البرنامج لمدة ثانية كما رأينا في الشفرة السابقةz
وأيضًا هناك دالة تسمى digitalRead لفهمها بشكل أكبر لديكم هذا المثال:
const int buttonPin = 2; // تحديد رقم مدخل الزر
const int ledPin = 13; // تحديد رقم مخرج الـضوء (LED)
void setup() {
pinMode(buttonPin, INPUT); // تعيين مدخل الزر كإدخال
pinMode(ledPin, OUTPUT); // تعيين مخرج الـضوء (LED) كإخراج
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
digitalWrite(ledPin, HIGH); // تشغيل الـضوء (LED)
} else {
digitalWrite(ledPin, LOW); // إيقاف تشغيل الـضوء ( LED)
}
}
يقوم هذا الكود بتشغيل الضوء (LED) عند الضغط على الزر و إيقافه عند عدم الضغط عليه.
ماهي وظيفة digitalRead هنا ؟
وظيفة digitalRead هي قراءة حالة مدخل\مخرج معين على اللوحة وإرجاع قيمة تشير إلى حالة مدخل/مخرج إما HIGH أو LOW تستخدم هذه الدالة لقراءة حالة أجهزة الإدخال المتصلة بالمخارج/المداخل الرقمية مثل المفاتيح أو الأزرار.
في المثال السابق، نستخدم digitalRead لقراءة حالة المفتاح المتصل بمخرج/مدخل buttonPin تستخدم قيمة القراءة المُرجعة من digitalRead لتشغيل أو إيقاف تشغيل الـضوء (LED) .
إذا كانت قيمة القراءة تساوي HIGH، فهذا يعني أن الزر مضغوط ويتم تشغيل الـضوء (LED) .إذا كانت قيمة القراءة تساوي LOW، فهذا يعني أن الزر غير مضغوط ويتم إيقاف تشغيل الضوء( LED ).
ختامًا في هذا المقال عرّفنا :
• Arduino IDE و طريقة تثبيته على الأجهزة
• دالة pinMood
• دالة digitalRead
• دالة digitalWrite
• دالة،delay
وفي المقالات القادمة سيتم التعرف على دوال أكثر وبعض الحساسات والأجزاء التي يمكن ربطها باللوحة.