البرمجة باستخدام بطاقة اردوينو - الجزء 3

img00

 بعدما تم تنفيذ الخطوات السابقة بنجاح، نبدأ اليوم بأول لمسة برمجية لنا بتعديل الكود المتحكم

بإشعال الصمام الضوئي LED حتى يستطيع أن ينجز وميضا متتابعا. 


إن لم تكن اطلعت على  الأجزاء اﻷولى من هذه السلسلة فسيكون صعبا عليك البدء من وسطها إلا إذا كانت لك دراية مسبقة ببرمجة الروبوتات. 

لنبدأ

 قم بفتح نفس الكود (الشيفرة)  في الدرس السابق.

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

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

/*******************************************************************************************

*****وميض*****
 شيفرة بسيطة تهدف إلى جعل الصمام الضوئي LED
مشتعلا لثانية واحدة ثم يتم إطفاءه
نستعمل المربط الرقمي 13 في البطاقة البرمجية Arduino
http://www.arduino.cc/en/Tutorial/Blink

 *****************************************************************************************/

int ledPin = 13;      //digital pin 13   // سيوصل الصمام الضوئي بالمربط الرقمي 13

 

void setup()             //ستنفذ هذه الدالة مرة واحدة فقط وهي من أجل تهيئة البطاقة  حسب

{

  pinMode(ledPin, OUTPUT);      //  سنستعمل المربط الرقمي كمخرج للصمام الضوئي

}

 

void loop()                     //تنفذ هذه الدالة إلى ما  نهاية

{

  digitalWrite(ledPin, HIGH);   // اشعل الصمام الضوئي

  delay(1000);                  // انتظر ثانية واحدة

  digitalWrite(ledPin, LOW);    // اطفإ الصمام الضوئي

  delay(1000);                  // انتظر ثانية واحدة

}


تحليل الشيفرة

التعليقات 

التعليقات عبارة عن شرح يكتب في الشيفرات لتسهيل فهم اﻷوامر المكتوبة للإنسان. يقوم البرنامج بتجاهلها ﻷنها لا تهمه بل تهم الانسان فقط حينما يريد أن يطلع على الشيفرة ليفهم محتواها.

يبدأ كل تعليق بالرمز /* وينتهي بالرمز */، هذا في حالة كتابة نص كبير كمقدمة الشيفرة  مثلا:

/*****************************************************************************************

*****وميض*****

 شيفرة بسيطة تهذف إلى جعل الصمام الضوئي LED

مشتعلا لثانية واحدة ثم يتم إطفاءه.

نستعمل المربط الرقمي 13 في البطاقة البرمجية Arduino.

http://www.arduino.cc/en/Tutorial/Blink

*****************************************************************************************/

 يوجد نوع آخر من التعليقات يبدأ بالرمز // ويكون مكتوبا في سطر واحد فقط. 

        //digital pin 13   // سيوصل الصمام الضوئي بالمربط الرقمي 13

      

         //ستنفذ هذه الدالة مرة واحدة فقط وهي من أجل تهيئة البطاقة  حسب          

 

 

          //  سنستعمل المربط الرقمي كمخرج للصمام الضوئي

 

المتغيرات 

int ledPin = 13;      //digital pin 13   // سيوصل الصمام الضوئي بالمربط الرقمي 13

 

كما هو الشأن في الرياضيات حيث توجد عدة مجموعات للأعداد كمجموعة اعداد الصحيحة الطبيعية ومجموعة اعداد الحقيقية فكذلك الشأن في اللغة C.

تمثل مجموعة اعداد الصحيحة في الرياضايات بالحرف N بينما تمثل في اللغة C بالرمز int وهي اختصار لكلمة انجليزية (integer) وتعني "صحيحباللغة العربية.

كما تمثل مجموعة اعداد الحقيقية في الرياضايات بالحرف R بينما تمثل في اللغة C بالكلمة الانجليزية float.

وبالتالي فإنه تم تعريف المتغير ledPin بأنه عدد صحيح وتمت تهيئته ليمثل العدد 13 (;int ledPin = 13).

الفاصلة المنقطة في نهاية كل سطر تعني نهاية امر. فمثلا سيوضع العدد 13 في المتغير ledPin وهذا ما نريده فقط في هذا السطر فننهيه بالفاصلة المنقطة ;

 

الدوال 

تعتبران الدالتان setup و  loop  اهم في برمجة الروبوتات. فاولى تقوم بتهيئة البطاقة البرمجية بينما التالية يكرر النداء عليها إلى ما لانهاية.

void setup()    

{

  pinMode(ledPin, OUTPUT);

}

 

voidloop()

{

  digitalWrite(ledPin, HIGH);

  delay(1000);

  digitalWrite(ledPin, LOW);

  delay(1000);

}

 

اقرا معي المثال التالي، وقل لي ما الذي فهمت منه: 

شيء نظيف نظف( الشيء المتسخ )

{

  اجلب الصاوبون;

  افتح الصنبور;

  اسكب بعضا من الماء على الشيء المتسخ;

  انتظر 10 ثوان;

  اغلق الصنبور;

  مرر الصابون على الشيء المتسخ;

  افتح الصنبور;

  ضع الشيء المتسخ تحت الصنبور;

  انتظر 20 ثانية;

  اغلق الصنبور;

  ضع الشيء في مكان اشياء النظيفة;

}

 

هل فهمت شيئا؟؟؟؟

كلما تريد أن تنظف شيئا متسخا تقوم بعملية "نظف”. تأخد الشي المتسخ وتمر عبر خطوات (أو أوامر) يتم من خلالها تمرير الشيء المتسخ عبر مراحل حتى يصبح شيئا نظيفا.

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

لكل من الدالتين setup و loop مهمة خاصة.

الدالة setup تقوم بتهيئة البطاقة البرمجية في البداية أي بعملية التحضير.

تحضير ماذا؟ تحضير المربط رقم 13 بالبطاقة البرمجية Arduino حتى يستعمل كمخرج لا كمدخل.

توجد دالة معرفة عند البرنامج Arduino يتم استعمالها لتقوم بهذه المهمة،

نتكلم هنا عن pinMode، وهي امر الوحيد الذي يتم تنفيذه داخل الدالة setup.

أما الدالة loop  (كرر باللغة العربية) فهي تقوم بتكرير المهام التالية إلى ما لا نهاية: 

لا شيئ كرر( )

{

  اشعل الصمام الضوئي;

  انتظر ثانية واحدة;

  اطفإ الصمام الضوئي;

  انتظر ثانية واحدة;

}

طالما البطاقة البرمجية متصلة بالكهربائي فسيبقى الصمام الضوئي يشتعل وينطفأ إلى مالا نهاية.  


تعديل الشيفرة

اﻵن حان الوقت لتظيف لمساتك بتغيير شيفرتنا لتقوم بمهام أخرى تحت رغبتك. أول شيء بسيط يمكنها تجريبه هو تعديل وقت إشعال وانطفاء الصمام الضوئي. قم بتغيير القيمة 1000 جزء من الثانية إلى 500 جزء من الثانية كالتالي: 

void loop()

{

  digitalWrite(ledPin, HIGH);

  delay(500);

  digitalWrite(ledPin, LOW);

  delay(500);

}

قم الآن بتنفيذ الشسفرة الجديدة بالنقر على Compile/Verify كما أشرنا أليها في الدرس السابقبعدها حول الشيفرة إلى البطاقة البرمجية.

حينها من المفترض أن ترى وميضا للصمام الثنائي أسرع مما كان عليهإذا حصل ولم ترى ما يسرك فتحقق من التالي:

هل البطاقة متصلة بالحاسوب؟

هل بالفعل غيرت القيمة 1000 إلى القيمة 500.

هل قمت بالنقر على  Compile/Verify ؟

هل قمت بتحويل ناجح إلى البطاقة؟  


تمارين

تمرين 1: قم بتغيير الشيفرة بحيث يشتعل الصمام الضوء 100 جزء من الثانية وينطفأ لمدة 900 جزء من الثانية.

تمرين 2: قم بتغيير الشيفرة بحيث يشتعل الصمام الضوء 50 جزء من الثانية وينطفأ لمدة 50 جزء من الثانية. ما هي النتيجة؟

تمرين 3: 
قم بتغيير الشيفرة بحيث يشتعل الصمام الضوء 10 أجزاء من الثانية وينطفأ لمدة 10 أجزاء من الثانية. كيف أصبحت النتيجة؟ 
إذا كنت بالليل أطفأ ضوء الغرفة وقم بتحريك البطاقة Arduino يمينا ويسارا ثم انظر ماذا ترى. 
ما هو تفسيرك لما حدث؟ 


التأليف

ترجمة محمد السهلي. 

{jumi [*3]}


 المراجع

 

http://www.ladyada.net/learn/arduino/lesson2.html


التعليقات   

 
# Guest 2015-06-12 01:53
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-06-09 23:09
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-06-04 21:42
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-05-16 02:23
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-05-07 15:53
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-04-25 12:47
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-04-20 23:36
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-04-15 20:01
قام المدير بحذف هذا التعليق
 
 
# Guest 2015-03-12 14:11
قام المدير بحذف هذا التعليق
 
 
habib
0 # habib 2014-07-25 23:50
هنا كتاب جيد جدا جدا لتعلم برمجة الأردوينو
t3elem.blogspot.com/.../...
مدونة t3elem دروس وتمارين و كتب للتعلم
t3elem.blogspot.com/
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 
 
محمد البابلي
+1 # محمد البابلي 2013-11-20 11:50
عاشت ايدك أخوية..رحمه الله والديك
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير
 

أضف تعليق


كود امني
تحديث


Go to top