دوال التحكم بالاتصالات التسلسلية في أردوينو

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث


تستعمل واجهة التخاطب التسلسلية للتواصل بين لوحة أردوينو وأجهزة أخرى (مثل الحاسوب). تملك جميع لوحات أردوينو منفذ تسلسلي واحد على الأقل يُعرَف باسم UART أو USART. يستعمل هذا المنفذ الرجل 0 (RX) والرجل 1 (TX) في عملية التواصل، إذ تكون هاتان الرجلان موصلتين مع المنفذ USB للتواصل مع الحاسوب. نتيجةً لذلك، إن استعملت إحدى الدوال الموجودة في هذا القسم في تهيئة واجهة التخاطب التسلسلية والبدء باستعمالها، فلن تتمكن من استعمال الرجلين 0 و 1 من أجل الدخل أو الخرج الرقمي بعدئذٍ. تستطيع استعمال مراقب الاتصالات التسلسلية المدمج في بيئة أردوينو التطويرية (Arduino IDE) للتواصل مع لوحة أردوينو. اضغط على زر مراقب الاتصال التسلسلي (serial monitor) في شريط الأدوات واختر معدل تدفق البيانات أو سرعة الاتصال (baud rate) نفسه الذي استُعمَل في تهيئة الاتصال باستدعاء الدالة begin()‎.

يستعمل الاتصال التسلسلي في الرجلين RX و TX المستويات TTL المنطقية (5V أو 3.3V بناءً على اللوحة المستعملة). لا توصل هذه الأرجل مباشرةً مع منفذ RS232 تسلسلي، إذ يعمل بجهد 12V -/+ وقد يتسبِّب في إتلاف اللوحة.

تملك لوحة أردوينو Mega ثلاثة منافذ اتصال تسلسلية إضافية هي: المنفذ Serial1 على الرجلين 19 (RX) و 18 (TX)، والمنفذ Serial2 على الرجلين 17 (RX) و 16 (TX)، والمنفذ Serial3 على الرجلين 15 (RX) و 14 (TX). إن أردت استعمال هذه الأرجل في التواصل مع الحاسوب، فستحتاج إلى محول من المنفذ USB إلى منفذ تسلسلي (USB-to-serial adaptor). أمّا إن أردت استعمال هذه الأرجل للتواصل مع جهاز TTL تسلسلي خارجي، فصِل الرجل TX للوحتك مع الرجل RX لذلك الجهاز، والرجل RX للوحتك مع الرجل TX للجهاز الخارجي، والقطب الأرضي للوحتك (Mega) مع القطب الأرضي للجهاز.

تملك لوحة أردوينو Due ثلاثة منافذ TTL تسلسلي بجهد 3.3V إضافية هي: المنفذ Serial1 على الرجلين 19 (RX) و 18 (TX)، والمنفذ Serial2 على الرجلين 17 (RX) و 16 (TX)، والمنفذ Serial3 على الرجلين 15 (RX) و 14 (TX). الرجلان 0 و 1 موصولتان أيضًا مع ما يقابلهما في المتحكم ATmega16U2 المستعمل كشريحة تحويل من منفذ USB إلى منفذ TTL تسلسلي، والموصول أيضًا مع المنفذ USB لتنقيح الأخطاء (USB debug port). أضف إلى ذلك أنه يوجد منفذ USB تسلسلي أصلي على شريحة المتحكم SAM3X يدعى SerialUSB.

تستعمل لوحة أردوينو Leonardo المنفذ Serial1 التسلسلي للتواصل عبر المنفذ TTL (بجهد 5V) في الرجلين 0 (RX) و 1 (TX). المنفذ Serial محجوزٌ للاتصال USB CDC. لمزيد من المعلومات، ارجع إلى صفحة البدء الخاصة بلوحة Leonardo بالإضافة إلى صفحة العتاد.

if(Serial)‎

تتحقَّق الدالة if(Serial)‎ إن كان المنفذ Serial التسلسلي المُمرَّر إليها جاهزًا للاستعمال.

available()‎

تجلب الدالة available()‎ عدد البايتات (المحارف) المتاحة للقراءة من منفذ الاتصال التسلسلي.

availableForWrite()‎

تجلب الدالة availableForWrite()‎ عدد البايتات (المحارف) المتاحة للكتابة في ذاكرة التخزين المؤقتة لمنفذ الاتصال التسلسلي دون حجب عملية الكتابة.

begin()‎

تضبط الدالة begin()‎ معدل تدفق البتات في الثانية الواحدة (baud) لعملية نقل البيانات عبر الاتصال التسلسلي.

end()‎

تعطِّل الدالة end()‎ الاتصال التسلسلي المفتوح محرِّرةً بذلك الرجل 0 (RX) والرجل 1 (TX) لتصبح قابلةً للاستعمال كدخل أو خرج رقمي.

find()‎

تتحقَّق الدالة find()‎ من وجود السلسلة النصية المُمرَّرة إليها ضمن بيانات ذاكرة التخزين المؤقتة للاتصال التسلسلي.

findUntil()‎

تتحقَّق الدالة findUntil()‎ من وجود السلسلة النصية المُمرَّرة إليها ضمن جزء محدَّد من بيانات ذاكرة التخزين المؤقتة للاتصال التسلسلي.

flush()‎

تنتظر الدالة flush()‎ اكتمال عملية نقل البيانات المرسلة عبر الاتصال التسلسلي

parseFloat()‎

تعيد الدالة parseFloat()‎ أول عدد عشري صالح من مخزَّن الاتصال التسلسلي المؤقت.

parseInt()‎

تعيد الدالة parseInt()‎ أول عدد صحيح صالح من مخزَّن الاتصال التسلسلي المؤقت.

peek()‎

تعيد الدالة peek()‎ البايت (المحرف) التالي من البيانات المستلمة عبر الاتصال التسلسلي دون حذفه من المخزَّن الداخلي المؤقت للاتصال التسلسلي.

print()‎

تطبع الدالة print()‎ البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته). 

println()‎

تطبع الدالة println()‎ البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته) ثمَّ تتبعها بمحرف العودة إلى بداية السطر (المحرف 'r\' أو ASCII 13) ومحرف سطر جديد (المحرف 'n\' أو ASCII 10).

read()‎

تقرأ الدالة read()‎ البيانات المستلمة عبر الاتصال التسلسلي.

readBytes()‎

تقرأ الدالة readBytes()‎ البيانات المستلمة عبر الاتصال التسلسلي وتضعها في متغير يمثِّل مخزن مؤقت (buffer). 

readBytesUntil()‎

تقرأ الدالة readBytesUntil()‎ جزءًا محدَّدًا من البيانات المستلمة عبر الاتصال التسلسلي وتضعها في متغير يمثِّل مخزن مؤقت (buffer)

readString()‎

تقرأ الدالة readString()‎ المحارف المستلمة عبر الاتصال التسلسلي وتعيدها كسلسلة نصية.

readStringUntil()‎

تقرأ الدالة readStringUntil()‎ جزءًا من المحارف المستلمة عبر الاتصال التسلسلي وتعيدها كسلسلة نصية.

setTimeout()‎

تضبط الدالة setTimeout()‎ المهلة الزمنية القصوى بالميلي ثانية لانتظار وصول البيانات من منفذ الاتصال التسلسلي.

write()‎

تكتب الدالة write()‎ بيانات ثنائية على منفذ الاتصال التسلسلي.

serialEvent()‎

تُستدعَى الدالة serialEvent()‎ عندما يكون هنالك بيانات متاحة للقراءة عبر منفذ الاتصال التسلسلي.

انظر أيضًا

  • واجهة الاتصال عبر المجاري.
  • مثال: قراءة سلسلة نصية مُرمَّز بالترميز ASCII.
  • مثال: توليد الجدول ASCII.
  • مثال: التحكم بشدة إضاءة ضوء عبر المنفذ التسلسلي.
  • مثال: المخطط البياني.
  • مثال: إنشاء بكسل والتحكم به.
  • مثال: الاتصال والاستجابة (المصافحة) عبر المنفذ التسلسلي.
  • مثال: النداء والاستجابة (المصافحة) مع استعمال مخرجات مُرمَّزة بالترميز ASCII.

مصادر