اردوينو – الدرس السادس – شاشة الاتصال التسلسلي – Serial Monitor

مبتدئ

في هذا الدرس سنتعلم كيفية التحكم بإضاءة الـ LEDs عبر شاشة الإتصال التسلسلي “serial monitor” وهو يعتبر حلقة الوصل بين جهاز الكمبيوتر والأردوينو حيث يمكنك من ارسال واستقبال الرسائل والتحكم بالأردوينو .

serial monitor

مثال ، يمكنك ارسال اوامر من جهاز الكمبيوتر لإضاءة الـLED .
في هذا الدرس سوف تستخدم نفس القطع المستخدمة في الدرس الخامس ، لذلك ننصحك بمتابعته اولاً قبل إكمال هذا الدرس.

شاشة الاتصال التسلسلي – Serial Monitor

قم برفع الكود التالي إلى الاردوينو ، وسنرى كيف سوف يعمل

 

 

بعد رفع المخطط على الأردوينو بنجاح قم بالضغط على الزر الموجود يمين الشاشة بشريط الأدوات ( كما في الصورة )

serial monitor

سوف تظهر لك هذه النافذة التالية

serial monitor

هذه النافذة تسمى “Serial Monitor” شاشة الاتصال التسلسلي وهو أحد خصائص برنامج الأردوينو. وظيفته هي السماح لك بإرسال وإستقبال الرسائل من جهاز الكمبيوتر إلى الأردوينو عبر كيبل USB.

الرسالة “Enter LED Number 0 to 9 or ‘x’ to clear” تم ارسالها عبر الأردوينو ، تطلب منا معرفة الأمر الذي سيتم تنفيذه . هل هو “X” (لإطفاء جميع الـ LEDs) أو ادخال رقم الـLED الذي ترغب بإضاءته (من 0 إلى 7 )

جرب ادخال الأمر التالي:
Enter    X
Enter    3
Enter    5

عملية ادخال X لن تؤثر لأن جميع الـ LEDs مطفأه ، ولكن عند ادخال رقم الـLED المراد إضاءته سيقوم الأردوينو بالرد عليك برسالة تؤكد تشغيله كما نشاهد بالصورة التالية.

serial monitor

يمكنك تجربة الأمر X لتشاهد عملية الإطفاء لها جميعاً.

كود الأردوينو

كما ستلاحظ سوف نعتمد على كود الدرس السابق وسوف نقوم فقط بتغطية الاجزاء الجديدة بالكود ( عليك مراجعة كود الدرس السابق كاملاً حتى يسهل عليك متابعة الجزء الجديد)

أولاً ، دالة “setup” هنالك ثلاثة أسطر جديدة في نهايته

   

 

 

أولاً لدينا الأمر “Serial.begin(9600)” وهو يقوم ببدء عملية الإتصال التسلسلي ليمكن الأردوينو من إرسال الأوامر عبر كيبل الـUSB. القيمة 9600 هو معدل سرعة نقل البيانات،يمكنك تغيير القيمة لقيمة أعلى ولكن يجب عليك تغيير قيمة شاشة الاتصال التسلسلي لنفس القيمة.

السطر الثاني يبدأ بـ”While” الشرطية للتأكد من ان هنالك اتصال عبر الـUSB للأردوينو قبل بدء ارسال الرسائل .

السطر الثالث لطباعة السؤال بالشاشة.

دالة “loop”

   

 

 

كل شي يحدث داخل دورة الـ loop يحدث داخل الجملة الشرطية IF (اذا كان)،
“Serial.available()” للتأكد من انه مازال هناك اتصال تسلسلي نشط (وذلك عبر استرجاع قيمة True – نعم) وعندها فقط يتم تنفيذ سلسلة الأوامر التي بداخلها.
اذا تم استقبال رسالة فسوف ينتقل لسطر الكود التالي

 

 

هذا الأمر سيقوم بقراءة الحرف الذي تم استلامه ويقوم بتخزينه للمتغير ch ،المتغير ch تم تعريفه  لتخزين القيم التي هي عبارة عن حروف  char وهي اختصار لـcharacter “حرف ” يتم تخزن حرف واحد فقط كقيمة للمتغير

السطر الذي يليله بالكود هي جملة IF الشرطية ، وذلك للتأكد من أن القيمة المدخلة أعلى من 0 وأقل من 7. قد تبدو غريبة عليك الآن ولكن اعدك عبر الممارسة ستقوم بفهمها جيداً.

كل حرف مدخل يحمل قيمة خاصة بالنظام ، يدعى قيمة ASCII .وهذا يعني انه عند استخدام <= و => فنحن نقوم بالمقارنة بقيم ASCII

اذا نجح الاختبار فسوف ينتقل للسطر الذي يليه

 

 

يقوم باحتساب قيمة الـ LED = وذلك عبر عملية طرح الصفر من  قيمة (ASCII) للحرف المدخل

لأننا نعلم برقم الـLED الذي نرغب بإضاءته كل ماعلينا فعله هو وضع تلك القيمة لـleads والقيام بتحديث مسجل الإزاحة shift register

  

 

 

السطرين التاليين سيقومون بإرسال رسالة التأكيد لشاشة الاتصال التسلسلي serial monitor

 

 

كما تلاحظ لقد قمنا بإستخدام Serial.print عوضاً عن Serial.println.الفرق بين الإثنين هو أن Serial.print لايقوم بوضع سطر جديد في الشاشة بعد طباعة الرسالة.
ولأننا نود أن نطبع في الشاشة رسالة التأكيد اضافة إلى رقم الـLED الذي تم اضاءته فيجب علينا ان نستمر بالطباعة على الشاشة في نفس السطر لذلك السطر الذي يليه قمنا بإستخدام Serial.println لأننا نرغب بوضع سطر جديد بعد طباعة الرسالة ورقم الـLED

قيمة الـLED هو عبارة عن integer رقم صحيح “int”
بعد جملة IF الشرطية الأولى هنالك جملة IF شرطية ثانية تقوم بالتأكد ما اذا كان قيمة “ch” يحمل الحرف x او لأ.

 

 

امور اخرى عليك القيام بها

قمنا بإرسال الحروف منفصله وذلك عبر الضغط على إنتر Enter بعد كل حرف لارسال الأمر ، ولكن يمكنك ارسالها جميعاً مره واحدة في سطر واحد .. جرب ادخال التالي في شاشة الاتصال التسلسلي وارسلها:
X0246

لنرى الآن لأي مدى سرعة اتصال الأردوينو . قم بتغيير معدل سرعة نقل البيانات في الكود من 9600 إلى 115200 وقم برفعه لمتحكم الأردوينو مره أخرى.
بعد ذلك قم بفتح شاشة الاتصال التسلسلي وقم بتغيير معدل سرعة نقل البيانات إلى 115200 (مثل الصورة)

5

ستلاحظ أنه لايزال كل شي يعمل بشكل صحيح ، معدل سرعات نقل البيانات العالية جداً غير ضرورية لذلك 9600 هي الشائع استخداما والعديد من وحدات الـGPS تستخدم هذه السرعة.

كما يمكنك عدم توحيد معدل نقل البيانات بين شاشة الاتصال التسلسلي و كود الأردوينو ، لتشاهد ماذا يحدث ولتعرف كيف يظهر الخطأ وماسببه.

شاشة الاتصال التسلسلي “Serial Monitor” هي طريقة جيدة أيضاً لتحليل أخطاء الكود وتصحيحها أيضاً