بوستاتنا | تعليمي - ترفيهي - منوع

تحديد مدخلات و مخرجات الاردوينو و برنامج التحكم باللمس


درس يشرح كيفية تحديد مدخلات و مخرجات (Inputs & Outputs) الآردوينو مع برنامج التحكم بالضوء عن طريق اللمس.

يحتوي الآردوينو على مجموعة من نقاط الارتباط (Pins) والتي يمكن من خلالها ربط الآردوينو إلى الدوائر الخارجية. يمكن استخدام أي من هذه النقاط كمدخلات أو مخرجات و حسب الحاجة. سنقوم اليوم بشرح المدخلات و المخرجات الثنائية (Digital Input & Digital Output). يمكن أيضاً تعريف نقاط الارتباط في الآردوينو كمدخلات خطية (Analog Inputs) أو يمكن التحكم بمقدار الفولتية الخارجة من نقطة الارتباط عن طريق تحميل عرض النبضة(PWM) لكن سيتم شرحها في موضوع آخر منفصل لاحقاً.

يستخدم الأمر pinMode لتحديد اتجاه نقطة الارتباط سواء كانت نقطة دخول (Input) أو نقطة خروج (Output). كما يمكنك تحديد نقطة الارتباط كمدخل مع مقاومة رفع (PULLUP).


ما هي مقاومة الرفع (PULLUP Resistor) ؟

إن مقاومة الدخول لنقطة ارتباط الآردوينو عالية جدا, لذلك فهي بحاجة إلى تيار قليل جدا لتغيير القيمة المقروءة على المدخل. لذلك فإن قيمة نقطة الربط التي تترك بدون أي ارتباط خارجي أو أن تربط إلى سلك غير مربوط إلى الدائرة ستكون عشوائية وذلك حسب ما يصل إليها من الضوضاء الخارجية كالمجالات الكهرومغناطيسية المنتشرة حوله. تقوم مقاومة الرفع بربط نقطة الربط هذه إلى فولتية المصدر عن طريق مقاومة عادة ما تكون عالية (يحتوي لوح التطوير من آردوينو على مقاومات رفع مدمجة بقيمة 20 كيلو اوم)  لتعطيها قيمة افتراضية لإلغاء تأثير الضوضاء على قيمة نقطة الارتباط. ستتعرف اكثر على فائدة هذه المقاومة أثناء تجربة المثال المرفق مع الدرس.


كيفية تحديد اتجاه نقطة الارتباط.

كما ذكرنا سابقاً فإن من الممكن تحديد اتجاه نقطة الارتباط كنقطة دخول أو نقطة خروج عن طريق الأمر pinMode و كما يلي:

  • نقطة خروج Output Pin. لتحديد نقطة ارتباط معينة في الآردوينو كنقطة خروج (Output Pin) يجب أن نحدد رقم نقطة الارتباط و نحددها كـ OUTPUT. على سبيل المثال, نحتاج إلى أن نجعل نقطة الارتباط رقم 13 كنقطة خروج فنستخدم الأمر pinMode(13, OUTPUT). أصبحت الآن نقطة الارتباط رقم 13 نقطة خروج و يمكننا تغيير قيمتها عن طريق الأمر digitalWrite لتغيير قيمتها إلى قيمة الفولتية الداخلة VCC بكتابة digitalWrite(13, HIGH) أو إلى قيمة 0 فولت بكتابة digitalWrite(13, LOW).

  • نقطة دخول Input Pin بدون مقاومة رفع. قد تكون نقطة الارتباط هذه مربوطة إلى جزء معين من دائرة خارجية و هي ليست بحاجة إلى مقاومة رفع أو انك قد قمت بوضع مقاومة رفع خارجية ذات قيمة محددة حسب احتياج التصميم, فأنت لست بحاجة إلى تشغيل مقاومة الرفع المدمجة داخل الآردوينو. لتحديد نقطة الارتباط رقم 2 كنقطة دخول, نكتب الأمر pinMode(2, INPUT). اصبح الآن بإمكاننا قراءة قيمة نقطة الدخول رقم 2 عن طريق الأمر digitalRead(2) والتي ستكون إما 0 أو 1 وحسب الفولتية المسلطة على نقطة الدخول.
  • نقطة دخول Input Pin مع مقاومة رفع. لتفعيل مقاومة الرفع المدمجة مع الآردوينو, يمكنك كتابة الأمر pinMode(2, INPUT_PULLUP).
لنبدأ الآن بكتابة برنامج بسيط يقوم بتشغيل دايود باعث للضوء LED مربوط إلى نقطة الارتباط رقم 13 عند لمس سلك مربوط بنقطة الاتصال رقم 2 و الأرضي. في البداية علينا تحديد نقطة الاتصال رقم 13 في الآردوينو كنقطة خروج فنكتب الأمر pinMode(13, OUTPUT) في الجزء void setup() (لمعرفة المزيد عن بيئة تطوير الآردوينو يمكنك مراجعة درس مباديء برمجة الآردوينو).
سنقوم في البداية بتعريف نقطة الارتباط رقم 2 كنقطة دخول بدون مقاومة رفع لنتعرف إلى طريقة تصرف الآردوينو بدون هذه المقاومة ثم نقوم بربط مقاومة رفع خارجية و في النهاية سنقوم بتفعيل مقاومة الرفع المدمجة و نقارن الاختلافات. إذاً نقوم الآن بكتابة الأمر pinMode(2, INPUT).
اصبح الآن الجزء void setup كالتالي:


void setup() {
  pinMode(13,OUTPUT);
  pinMode(2,INPUT);
}

لتشغيل الدايود الباعث للضوء LED المربوط إلى نقطة الاتصال رقم 13, يجب أن نقوم بتسليط فولتية على هذه النقطة, لكن تشغيله يعتمد على قراءة قيمة نقطة الارتباط رقم 2. هناك اكثر من طريقة لفعل ذلك, منها أن نقوم بوضع قيمة القراءة المأخوذة من النقطة 2 ثم كتابتها على النقطة 13 أو استخدام الجمل الشرطية, لكننا سنقوم بكتابة أمر بسيط يقوم بكتابة قيمة القراءة على النقطة رقم 2 مباشرة إلى النقطة 13 عن طريق كتابة

digitalWrite(13,digitalRead(2));

 ملاحظة: يحتوي لوح تطوير آردوينو على دايود باعث للضوء LED مدمج على اللوح و مربوط إلى نقطة الارتباط 13 ويرمز له بالرمز L. أي يمكنك الاعتماد على هذا الـLED أثناء هذه التجربة دون الحاجة إلى ربط LED خارجي.
لنبدأ الآن بتنفيذ التجربة عمليا لمقارنة النتائج.

الصفحة 1 من 2    التـالي

 
سياسة الخصوصية حول الموقع اتصل بنا