الثوابت في أردوينو

من موسوعة حسوب

الثوابت هي تعابير معرَّفة مسبقًا في لغة أردوينو. تُستعمَل لتسهيل عمل المبرمجين أثناء كتابتهم للشيفرة، بالإضافة إلى جعل الشيفرة أكثر قابلية للقراءة. تُصنَّف الثوابت في مجموعات بحسب وظيفتها.

تعريف المستويات المنطقية (الثوابت المنطقية)

يوجد ثابتان يستعملان لتمثيل الحقيقة (truth) والزيف (falsity) في لغة أردوينو هما: true، و false.

الثابت false

تمثِّل القيمة false المنطقية قيمة خطأ، وتعرَّف على أنَّها صفر (0) من الناحية العددية.

الثابت true

تمثِّل القيمة true المنطقية قيمة صحيحة وتُعرَّف على أنَّها واحدٌ (1) من الناحية العددية. حقيقةً، تمثِّل القيمة true مجالًا أوسع من القيم العددية لا يقتصر على العدد 1 فقط، إذ يشار إلى أي قيمة غير صفرية على أنَّها القيمة true من الناحية المنطقية. بناءً على ذلك، تشير القيم 1-، و 2، و 200- جميعها إلى القيمة true منطقيًّا.

انتبه إلى أنَّ الثابتين true و false مكتوبان بأحرف صغيرة خلافًا لثوبات أخرى مثل HIGH، و LOW، و INPUT ...إلخ.

تعريف حالة الأرجل (مستوى الجهد)

عند قراءة قيمة الأرجل الرقمية أو الكتابة عليها، نجد أنَّنا نتعامل مع قيمتين لا ثالث لهما؛ يمكن أن تأخذ إحدى الأرجل الرقمية أو تُضبط إلى القيمة HIGH أو LOW.

الثابت HIGH

معنى القيمة HIGH الثابتة، عند التعامل مع أرجل لوحة أردوينو، يختلف باختلاف وضع الرجل؛ أي إن كانت الرجل رجلَ دخلٍ (INPUT) أو رجلَ خرجٍ (OUTPUT). فإن ضُبِطت الرجل إلى رجل دخل بتمرير القيمة INPUT إلى الدالة pinMode() وقُرِئَت باستعمال الدالة digitalRead()، فستبِّلغ اللوحة (المتحكم ATmega) عن القيمة HIGH إذا كان:

  • الجهد المطبَّق على الرجل أكبر من 3.0V في اللوحات ذات الجهد 5V، أو
  • الجهد المطبَّق على الرجل أكبر من 2.0V في اللوحات ذات الجهد 3.3V.

يمكن أيضًا ضبط الرجل إلى رجل دخل بتمرير الثابت INPUT إلى الدالة pinMode()‎ ثم كتابة القيمة HIGH عليها باستعمال الدالة digitalWrite()‎، إذ سيؤدي ذلك إلى تفعيل مقاومة الرفع الداخلية المتصلة بتلك الرجل. تفعيل هذه المقاومة سيرفع جهد الرجل إلى المستوى HIGH إلا إذا خُفِّض إلى المستوى LOW بوصلها مع دارة خارجية. هذا مماثل تمامًا لما يفعله الثابت INPUT_PULLUP عند تمريره إلى الدالة pinMode()‎ الذي سنتطرق إلى ذكره لاحقًا.

عندما يُضبَط وضع الرجل إلى رجل خرج بتمرير الثابت OUTPUT إلى الدالة pinMode()‎، ثمَّ كتابة القيمة HIGH عليها باستعمال الدالة digitalWrite()‎، فسيكون جهد تلك الرجل:

  • 5 فولط في اللوحات ذات الجهد 5V، أو
  • 3.3 فولط في اللوحات ذات الجهد 3.3V.

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

الثابت LOW

يختلف أيضًا معنى القيمة LOW الثابتة باختلاف وضع الرجل؛ أي إن كانت رجل دخلٍ أو رجل خرج. فإن ضُبِطت الرجل إلى رجل دخل بتمرير القيمة INPUT إلى الدالة pinMode()‎ وقُرِئَت باستعمال الدالة digitalRead()‎، فستبِّلغ اللوحة (المتحكم ATmega) عن القيمة LOW إذا كان:

  • الجهد المطبَّق على الرجل أصغر من 1.5V في اللوحات ذات الجهد 5V، أو
  • الجهد المطبَّق على الرجل أصغر من 1.0V تقريبًا في اللوحات ذات الجهد 3.3V.

عندما يُضبَط وضع الرجل إلى رجل خرج بتمرير الثابت OUTPUT إلى الدالة pinMode()‎، ثمَّ كتابة القيمة LOW عليها باستعمال الدالة digitalWrite()‎، فسيكون جهد تلك الرجل هو 0 فولط (في اللوحات 5V و 3.3V كلاهما). عندما تكون الرجل في هذه الحالة، يمكن تصريف تيارٍ فيها مثل وصل أحد أقطاب ضوء ليد بها ووصل القطب الآخر مع مقاومة على التسلسل بقطبٍ جهده 5V+ (أو 3.3V+) لإضاءته.

تعريف وضع الأرجل (دخل أو خرج)

يمكن استعمال الأرجل الرقمية كأرجل دخل أو أرجل خرج عبر استعمال أحد الثوابت INPUT، أو INPUT_PULLUP، أو OUTPUT مع الدالة pinMode()‎. عند تهيئة الرجل بهذا الشكل، يُغيَّر سلوكها الكهربائي بشكل كامل داخليًّا.

الثابت INPUT

يقال أنَّ أرجل لوحة أردوينو (أرجل المتحكم) المضبوطة كأرجل دخل عبر استعمال الثابت INPUT مع الدالة pinMode()‎ تكون في حالة مقاومة عالية (high-impedance state). تجعل الأرجل المضبوطة إلى أرجل دخل (INPUT) الأعباء الملقاة على الدارة التي تفحصها صغيرةً جدًا؛ أي ما يعادل وجود مقاومة على التسلسل قيمتها 100 ميغا أوم أمام الرجل. هذا يجعل الأرجل مفيدة جدًا في قراءة قيم الحساسات.

إن ضبطت إحدى الأرجل كرجل دخل واستُعملَت لقراءة قاطعة (switch)، فستكون حالة الرجل «عائمة» (floating) عندما تكون القاطعة مفتوحة؛ سيؤدي هذا إلى إعطاء نتائج غير متوقعة. للتأكد من قراءة حالة الرجل بشكل صحيح عندما تكون القاطعة مفتوحة، يجب استعمال مقاومة رفع (pull-up) أو مقاومة خفض (pull-down) خارجية مع هذه الرجل. الهدف من وصل المقاومة بهذه الرجل هو ضبط جهدها إلى حالة معروفة عندما تكون القاطعة مفتوحة. يُستعمَل عادةً مقاومة بقيمة 10 كيلو أوم، إذ هذه القيمة صغيرة بما فيه الكفاية لمنع انتقال رجل الدخل إلى الحالة العائمة، وكبيرة بما فيها الكفاية في الوقت نفسه لعدم سحب كمية كبيرة من التيار عند إغلاق القاطعة. اطلع على هذا الدرس التعليمي لمزيد من المعلومات.

إن استُعملَت مقاومة خفض خارجية (pull-down resistor)، فسيكون جهد رجل الدخل منخفضًا (LOW) عندما تُفتَح القاطعة، ومرتفعًا (HIGH) عندما تُغلَق القاطعة.

إن استُعملَت مقاومة رفع خارجية (pull-up resistor)، فسيكون جهد رجل الدخل مرتفعًا (HIGH) عندما تُفتَح القاطعة، ومنخفضًا (LOW) عندما تُغلَق القاطعة.

الثابت INPUT_PULLUP

يملك المتحكم ATmega في لوحة أردوينو مقاومة رفع داخلية متصلة بكل رجل من أرجل الدخل والخرج يمكن التحكم بها. إن كنت تفضل استعمال هذه المقاومة عوضًا عن إضافة مقاومة رفع خارجية، فيمكنك فعل ذلك بتمرير الثابت INPUT_PULLUP إلى الدالة pinMode()‎ عند تهيئة الرجل. اطلع على هذا الدرس التعليمي الذي يحوي مثالًا عمليًّا عمَّا ذكرناه.

تحذير: يمكن للأرجل المضبوطة كأرجل دخل باستعمال الثابت INPUT أو الثابت INPUT_PULLUP أن تَتلَف أو تَتخرَّب إن وُصِلَت مع جهود أقل من الجهد الأرضي (جهود سالبة)، أو أكبر من الجهد الموجب (5V أو 3.3V).

الثابت OUTPUT

يقال أنَّ أرجل لوحة أردوينو (أرجل المتحكم) المضبوطة كأرجل خرج عبر استعمال الثابت OUTPUT مع الدالة pinMode()‎ تكون في حالة مقاومة عالية (high-impedance state). هذا يعني أنَّها يمكن أن توفِّر كمية كافية من التيار للأجهزة والدارات الأخرى المتصلة بها. تستطيع أي رجل من أرجل المتحكم ATmega أن تعطي الأجهزة والدارات الأخرى أو تُصرِّف منها تيارًا يصل إلى 40 ميلي أمبير. تجاوز هذه القيمة من التيار يؤدي إلى إتلاف المتحكم، لذا يجب استعمال مقاومات أو أي عنصر إلكتروني مشابه لتحديد التيار عند وصل قطع إلكترونية تتطلب كميات كبيرة من التيار مثل المحركات.

تحذير: يمكن للأرجل المضبوطة كأرجل خرج باستعمال الثابت OUTPUT أن تتلف أو تتخرب إن وصلت مع الجهد الأرضي أو الجهد الموجب لمصدر التيار المستعمل بشكل مباشر.

تعريف العناصر المدمجة باللوحة

الثابت LED_BUILTIN

تملك أغلب لوحات أردوينو ضوء ليد مدمج مع اللوحة ومتصل بإحدى أرجلها مع مقاومة على التسلسل. يمثِّل الثابت LED_BUILTIN رقم الرجل المتصلة بهذا الضوء المدمج باللوحة. تكون هذه الرجل هي الرجل 13 في أغلب لوحات أردوينو التي تملك ضوءًا مدمجًا عليها.

انظر أيضًا

مصادر