في الحقيقة، إذا اجتزت الدروس السابقة بنجاح، فالذي يلي ليس إلا تمهيدا للذين لهم مواهب قليلة في البرمجة بشكل عام وشربة ماء للذين يعلمونها لكن لا يعرفون كيف يستخدمونها في عالم الروبوتيك. سنقوم اليوم بتزويدك ببعض أساسيات برمجة البطاقة البرمجية Arduino إضافة الى ما تم طرحه في الاﻷجزاء الاﻷولى من هذه السلسلة.
|
النوع
|
القيمة الدنوى
|
القيمة القصوى
|
byte
|
-128
|
127
|
int
|
-32768
|
32767
|
long
|
-2147483648
|
2147483647
|
النوع
|
القيمة الدنوى
|
القيمة القصوى
|
unsigned byte
|
0
|
255
|
unsigned int
|
0
|
65535
|
unsigned long
|
0
|
4294967295
|
النوع
|
القيمة الدنوى
|
القيمة القصوى
|
float
| ||
double
|
/* Hello World! رسالة ترحيب
* الهدف: نريد امتحان طرق الارسال بين الحاسوب والبطاقة
*/
void setup()
{
Serial.begin(9600); // 9600 bps سرعة التحويل
/* أظهر رسالة ترحاب Hello World! ثم ارجع الى السطر*/
Serial.println("Hello world!");
}
void loop()
{
// لا شيء
}
|
Serial.begin(9600); // 9600 bps سرعةالتحويل
|
Serial.println("Hello world!");
|
ربما تتساءل أين ستظهر هذه الرسالة وليس على البطاقة Arduino اي شاشة؟؟؟؟؟
نعم هذا صحيح، في الحقيقة سيتم ارسال هذه الرسالة غلى البطاقة Arduino وستتجاوب البطاقة مع الارسال بإشعراك عن طريق وميض. لكن برنامج Arduino يمكنك من رؤية الرسالة على الحاسوب. ما عليك إلا أن تضغط على الزر المبين في الصورة.
بعد أن تنفذ البرنامج Compile/Verify ثم تحول الشيفرة إلى البطاقة، ثم تضغط على الزر أعلاه، يجب أن يظهر لك على الصورة جانبه.
قد يتأخر استعراض الرسالة على الشاشة بعض الثواني فلا يهم. لكن إذا كنت تستعمل بطاقة NG Arduino فتذكر أنه يجب تهيئتها بالضغط على الزر اﻷسود (أو البني) على البطاقة حتى يتم تفعيها.
إذا ضغطت على هذا الزر أكثر من مرة فستظهر العديد من الرسائل على الشاشة بمقدار ما ضغطت، احذر من تكسر بطاقتك بكثرة الضغط فما زلنا نحتاجها لما هو أهم في المستقبل القريب ان شاء الله. نريد منك أن تكون أحد صناديد صناعة الروبوتات في العالم العربي يا حبيبي، ما أحوجنا إلى أمثالك. | |
لنتابع إذن.....
لدي لك بعض الإمتحانات الطفيفة هنا: (اعتبرها من طرف صديق لك وليس أستاذا متعجرفا)
| |
قم بتغيير الشيفرة أعلاه بحيث لا تحتاج لا ﻷن تضغط على زر ولا لشيء آخر، نريد منك أن تعدل الشيفرة بحيث عندما تحولها الى البطاقة تظهر لنا رسائل واحدة تلو اﻷخرى على الشاشة كما هو مبين في الصورة جانبه.
ستظهر الرسائل بسرعة كبيرة. آه، أريد منك تعديل شيء آخر اﻵن!!!! قم بتعديل آخر بحيث تظهر رسالة كل ثانية واحدة (تذكر استعمال الدالة delay كما اشرنا اليها سابقا) آآآآآآآه من الرياضيات، كم هو صعب وثقيل على النفس!!! لا تخف سأعطيك فقط ما قد يقوم به تلميذ في اﻷولى ابتدائي: انجز شيفرة جديدة ثم قم بنسخ التالي فيها، ثم نفذها وحولها الى البطاقة: |
*/ رياضيات يا عباقرة /*
نعرف بعض المتغيرات ونهيئها بأعداد مختلفة //
int a = 5;
int b = 10;
int c = 20;
void setup()
{
Serial.begin(9600); //سرعة التحويل
Serial.println("Salam alaikom: ");
Serial.print("a = "); // أظهر هذه الرسالة
Serial.println(a); // أظهر قيمة هذا المتغير
Serial.print("b = ");
Serial.println(b);
Serial.print("c = ");
Serial.println(c);
Serial.print("a + b = "); // الجمع
Serial.println(a + b);
Serial.print("a * c = "); // الضرب
Serial.println(a * c);
Serial.print("c / b = "); // القسمة
Serial.println(c / b);
Serial.print("b - c = "); // الطرح
Serial.println(b - c);
}
void loop() //لا بد أن تكتب هذه الدالة هنا ولو أنها فارغة
{
}
|
سنبقى مرة أخيرة مع الرياضيات، لكن نريد أن نستعمل دالة حساب الجذر المربع لعدد محدد. هنا يجب استدعاء مكتبة الرياضيات math.h ثم اعمل على راحتك في كتابة باقي الشيفرة.
نريد حساب وتر المثلث القائم الزاوية علما أننا نعلم كلا من قيمتي الضلعين a وb.
رياضيا، لحساب الوتر h نستعمل مبرهنة فيتاغورس التالية (سامحني على التوغل قليلا، لكن اقرأها فقط لا يهمك):
a2+ b2= h2
h =√(a2+ b2)
ستكون الشيفرة كالتالي
|
/*
* التوغل قليلا في الرياضيات
*/
#include "math.h" // استدعاء مكتبة الرياضيات
int a = 3;
int b = 4;
int h;
void setup()
{
Serial.begin(9600); // سرعة التحويل
Serial.println("al-watar h");
Serial.print("a = ");
Serial.println(a);
Serial.print("b = ");
Serial.println(b);
/* حساب الجذر المربع وهذه ما جعلنا نستدعي مكتبة الرياضيات*/
h = sqrt( a*a + b*b );
Serial.print("h = ");
Serial.println(h);
}
void loop() // رغم عدم استغلالها لازم تكون هنا
{
}
|
/*
* حساب مساحة القرص الصلب
*/
int drive_gb = 5;
void setup()
{
Serial.begin(9600); //سرعة التحويل
Serial.print("Your HD is ");
Serial.print(drive_gb);
Serial.println(" GB large.");
}
void loop()
{
}
|
/*
* حساب مساحة القرص الصلب
*/
int drive_gb = 100;
/* حاول ان تجرب الفرق بين long و int*/
long drive_mb;
void setup()
{
Serial.begin(9600);
Serial.print("Your HD is ");
Serial.print(drive_gb);
Serial.println(" GB large.");
drive_mb = 1024 * drive_gb;
Serial.print("It can store ");
Serial.print(drive_mb);
Serial.println(" Megabytes!");
}
void loop()
{
}
|