شاشة الإتصال المتسلسل Serial Monitor July 16, 2017 – Posted in: Arduino, Learn arduino
في هذا الدرس سنتعلم كيفية التحكم بإضاءة الـ LED عبر شاشة المراقب التسلسلي “serial monitor” وهو يعتبر حلقة الوصل بين جهاز الكمبيوتر والأردوينو حيث يمكنك من إرسال واستقبال الرسائل والتحكم بالأردوينو .
في هذا الدرس سوف نستخدم الدائرة الخاصة بالدرس الأول وهي توصيل الـ LED مباشرة بمنفذ رقم 13 وكما في الشكل التالي:
شاشة المراقب المتسلسل – Serial Monitor
قم بتحميل الكود التالي إلى لوحة الاردوينو ، لنرى كيف سوف يعمل.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
int led = 13; void setup(){ pinMode(led, OUTPUT); Serial.begin(9600); Serial.println("Enter Number 1 to Turn on the led or 0 to clear"); } void loop(){ if (Serial.available()) { char ch = Serial.read(); if (ch == '1'){ digitalWrite(led, HIGH); Serial.print("Turned on LED "); Serial.println(led); } else if(ch == '0') digitalWrite(led, LOW); } } |
بعد بعد تحميل الكود على لوحة الأردوينو بنجاح قم بالضغط على الزر الموجود أيمن الشاشة بشريط الأدوات ( كما في الصورة )
سوف تظهر لك النافذة التالية
هذه النافذة تسمى “Serial Monitor” شاشة الاتصال التسلسلي وهو أحد خصائص برنامج الأردوينو. وظيفته السماح لك بإرسال واستقبال الرسائل من جهاز الكمبيوتر إلى الأردوينو عبر كيبل USB.
الرسالة ” Enter Number 1 to Turn on the led or 0 to clear” تم إرسالها عبر الأردوينو ، الى جهاز الحاسوب, تطلب منا معرفة الأمر الذي سيتم تنفيذه . هل هو “0” لإطفاء جميع الـ LED أو ادخال رقم “1” لأضاءة الـ LED على منفذ رقم 13
جرب ادخال الأمر التالي:
1 ثم Enter
0 ثم Enter
عند ادخال رقم 1 تم إضاءة الـLED ثم سيقوم الأردوينو بالرد عليك برسالة تؤكد تشغيله كما نشاهد بالصورة التالية
أما عند إدخال رقم “0” تم إطفاء الـ LED .
شرح الكود:
بعد ما شاهدنا ما حصل سوف نقوم بشرح الكود لننتقل الى دالة setup(), سنشاهد وجود 3 اسطر جديده في نهايتها
1 2 3 4 5 6 7 8 9 |
void setup() { pinMode(led, OUTPUT); Serial.begin(9600); Serial.println("Enter Number 1 to Turn on the led or 0 to clear"); } |
أولاً لدينا الأمر “Serial.begin(9600)” وهو يقوم ببدء عملية الإتصال التسلسلي ليمكن الأردوينو من إرسال الأوامر عبر كيبل الـUSB. القيمة 9600 هو معدل سرعة نقل البيانات،يمكنك تغيير القيمة لقيمة أعلى ولكن يجب عليك تغيير قيمة شاشة الاتصال التسلسلي لنفس القيمة. كما في الصور التالية
السطر الثاني يبدأ بـ”While” الشرطية للتأكد من أن هنالك اتصال عبر الـUSB للأردوينو قبل بدء إرسال الرسائل .
السطر الثالث لطباعة السؤال بالشاشة.
دالة “loop”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
void loop(){ if (Serial.available(){ char ch = Serial.read(); if (ch == '1'){ digitalWrite(led, HIGH); Serial.print("Turned on LED "); Serial.println(led); } else if(ch == '0') digitalWrite(led, LOW); } } |
كل شي يحدث داخل دورة الـ loop يحدث داخل الجملة الشرطية IF (إذا كان)،
“Serial.available()” للتأكد من انه مازال هناك اتصال تسلسلي نشط (وذلك عبر استرجاع قيمة True – نعم) وعندها فقط يتم تنفيذ سلسلة الأوامر التي بداخلها.
إذا تم استقبال رسالة فسوف ينتقل لسطر الكود التالي
1 |
char ch = Serial.read(); |
هذا الأمر سيقوم بقراءة الحرف الذي تم استلامه ويقوم بتخزينه للمتغير ch، المتغير ch تم تعريفه لتخزين القيم التي هي عبارة عن حروف char وهي اختصار لـcharacter “حرف ” يتم تخزن حرف واحد فقط كقيمة للمتغير
السطر الذي يليه بالكود هي جملة IF الشرطية، وذلك للتأكد من أن القيمة المدخلة إما 1 أو 0. كل حرف مدخل يحمل قيمة خاصة بالنظام، يدعى قيمة ASCII. وهذا يعني انه عند استخدام == فنحن نقوم بالمقارنة بقيم ASCII
إذا نجح الاختبار فسوف ينتقل للسطر الذي يليه, ويقوم بإضاءة الليد عبر الأمر التالي
1 |
digitalWrite(led, HIGH); |
السطرين التاليين لإرسال رسالة التأكيد لشاشة الاتصال التسلسلي serial monitor
1 2 |
Serial.print("Turned on LED "); Serial.println(led); |
أما إذا كان المرسل هو رقم “0” فسوف يقوم بإطفاء الليد
أما بنسبة لسرعة انتقال البيانات لنرى الآن لأي مدى سرعة اتصال الأردوينو . قم بتغيير معدل سرعة نقل البيانات في الكود من 9600 إلى 115200 وقم برفعه لمتحكم الأردوينو مره أخرى.
بعد ذلك قم بفتح شاشة الاتصال التسلسلي وقم بتغيير معدل سرعة نقل البيانات إلى 115200 (مثل الصورة)
ستلاحظ أنه لا يزال كل شي يعمل بشكل صحيح ، معدل سرعات نقل البيانات العالية جداً غير ضرورية لذلك 9600 هي الشائع
كما يمكنك عدم توحيد معدل نقل البيانات بين شاشة الاتصال التسلسلي و كود الأردوينو ، لتشاهد ماذا يحدث ولتعرف كيف يظهر الخطأ ومسببه.
شاشة الاتصال التسلسلي “Serial Monitor” هي طريقة جيدة أيضاً لتحليل أخطاء الكود وتصحيحها أيضاً