كود البحث

لماذا نستخدم المقاومات مع أزرار الضغط والمفاتيح في الأردوينو

لماذا نستخدم المقاومات مع أزرار الضغط والمفاتيح في الأردوينو

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

  • مفتاح تشغيل/إيقاف بسيط لمصباح LED
  • جهاز تحكم ألعاب تفاعلي
  • جهاز تحكّم عن بُعد للأجهزة المنزلية
  • نظام أمني يتم تفعيله بواسطة زر ضغط

لنستكشف الأسباب وراء استخدام المقاومات في هذه الدوائر.

Arduino wiring for Push button wihthout resistor

الأجهزة/المكونات

المكونات الأساسية المطلوبة لهذا المشروع بسيطة: لوحة Arduino، ومفتاح زر ضغط، ومقاوم (أكبر من 300 ohms). قيمة المقاومة ليست حاسمة؛ قيم مثل 1kΩ أو 10kΩ أو حتى 100kΩ عادةً ما تعمل بشكل جيد (في الفيديو عند 00:41).

دليل الأسلاك

هناك تكوينان أساسيان لتوصيل الأسلاك (في الفيديو عند 00:30):

  1. التكوين 1:وصل زر الضغط بين دبوس الأردوينو و+5V. الطرف الآخر لزر الضغط متصل بالأرض عبر مقاومة. عندما يُضغط الزر، يقرأ الدبوس قيمة HIGH؛ وعندما يُحرر، يقرأ قيمة LOW.
  2. التكوين 2:وصل زر الضغط بين دبوس الأردوينو والأرضي. الجانب الآخر من زر الضغط متصل بـ +5V عبر مقاومة. عندما يُضغط الزر، تقرأ قيمة الدبوس منخفضة؛ وعند تحريره، تقرأ مرتفعة.

Arduino wriring for push button and LED
Arduino wriring for push button and LED

سيكون مخطط الأسلاك المرئي مفيدًا هنا.

شرح الكود

يستخدم كود الأردوينو الـpinMode()دالة لتهيئة الدبوس كمدخل. الجزء الحاسم هو استخدامINPUT_PULLUP(في الفيديو عند 04:06, 04:23). يلغي هذا المقاوم الداخلي للسحب للأعلى الحاجة إلى مقاوم خارجي في بعض التكوينات، مما يبسط الأسلاك. الـdigitalRead()تقوم الدالة بقراءة حالة الدبوس، و...if-elseتحدد العبارة ما إذا كان الزر مضغوطًا (LOW) أم لا (HIGH) (في الفيديو عند 08:34).


pinMode(2, INPUT_PULLUP); // Configures pin 2 as input with internal pull-up resistor
int pushButton = digitalRead(2); // Reads the state of pin 2
if (pushButton == LOW) {
  // Button is pressed
} else {
  // Button is not pressed
}

مشروع/عرض توضيحي مباشر

يعرض الفيديو كلا تكوينَي الأسلاك وسلوكَيْهما المقابلين. ويسلط الضوء على المشكلات التي قد تنشأ عند حذف المقاومة، مثل القراءات المتقلبة الناتجة عن الضوضاء والتوصيل السعوي (في الفيديو عند 06:18، 06:39، 07:21). يوضح العرض بجلاء التشغيل المستقر والموثوق الذي يتحقق بوجود المقاومة (في الفيديو عند 08:08).

الفصول

  • [00:00] مقدمة
  • [00:30] تكوينات الأسلاك
  • [04:12] شرح الكود باستخدام INPUT_PULLUP
  • [05:36] إزالة المقاوم: عرض عملي
  • [08:33] شرح الكود

الصور

لماذا يجب علينا استخدام مقاومة مع زر الضغط مع أردوينو؟
لماذا يجب علينا استخدام مقاومة مع زر الضغط مع أردوينو؟
لماذا يجب علينا استخدام مقاوم مع زر الضغط مع Arduino؟
لماذا يجب علينا استخدام مقاوم مع زر الضغط مع Arduino؟
2 pin tactile push button switch
2 pin tactile push button switch
Arduino wriring for push button and LED
Arduino wriring for push button and LED
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button wihthout resistor
Arduino wiring for Push button wihthout resistor
132-Code example using a resistor
اللغة: C++
/*
 * This is an Arduino Sketch for a tutorial video 
 * explaining why a resistor is needed to be used with a push button
 * with Arduino.
 * 
 * Written by Ahmad Shamshiri on July 17, 2018 at 23:11 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */

void setup() {
  // Robojax.com push button tutorial
  pinMode(3,INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("Robojax Push Button Tutorial");
  

}

void loop() {
  // Robojax.com push button tutorial
  int pushButton = digitalRead(3);
  if(pushButton == LOW)
  {
    Serial.println("Pin 3 LOW");
  }else{
    Serial.println("Pin 3 HIGH");
  }

delay(500);
}
133-Code example using INPUT_PULLUP without a resistor
اللغة: C++
/*
 * This is an Arduino Sketch for a Tutorial video 
 * explaining why a resistor is needed to be used with a push button
 * with an Arduino to connect the pin to Ground (GND)
 * 
 * Written by Ahmad Shamshiri on July 18, 2018 at 17:36 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */

void setup() {
  // Robojax.com push button tutorial
  pinMode(2,INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("Robojax Push Button Tutorial");
  

}

void loop() {
  // Robojax.com push button tutorial
  int pushButton = digitalRead(2);
  if(pushButton == LOW)
  {
    Serial.println("Button is pushed.");
  }else{
    Serial.println("Button is NOT pushed.");    
  }

delay(500);
}

الأشياء التي قد تحتاجها

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

لا توجد ملفات متاحة.