اردوينو – الدرس السابع – استخدام الازرار المدخلات الرقمية

مقدمة

في هذا الدرس، ستتعلم كيفية استخدام الازرار “push buttons” مع المدخلات الرقمية”digital inputs” لإضاءة وإطفاء الـLED.

  بالضغط على زر الموجود في أعلى لوح التجارب سيتم إضاءة الـLED ، وبالضغط على الزر الآخر سيتم إطفاءه.

استخدام الازرار

المواد والأدوات

arduino-lesson-7

 1× (5mm Red LED)

arduino-lesson-6

(270 Ω Resistor)

استخدام الازرار

2× ازرار (Tactile push switch)

Half-size Breadboard

لوحة التجارب (Half-size Breadboard)

Arduino Uno R3

 1× اردوينو اونو

Jumper wires

حزمة أسلاك توصيل (ذكر-ذكر)

Arduino cable

سلك اردوينو

استخدام الازرار Push Switches

استخدام الازرار يسهل الأمر في المشاريع، فعند الضغط عليه يقوم بتوصيل الدائرة.

الأزرار المستخدمة في هذا الدرس “مفاتيح اللمس – tactile switches” تمتلك أربعة موصلات

في الحقيقة هنالك موصلين اثنين كهربائية داخلها ( كما في الصورة) منفذ B ومنفذ c موصولة ببعضها كذلك الحال منفذ a ومنفذ D موصولة ببعض.

استخدام الازرار

 

توصيل الدائرة

ستجد أن نهايات الازرار تسمح لك بتركيبها على لوح التجارب بسهولة.

 يجب عليك تركيبها بحيث تكون الجهه السالبة (الأقصر) بإتجاه اليمين:

استخدام الازرار

استخدام الازرار

 

الكود البرمجي

ارفع الكود التالي إلى متحكم الأردوينو لتبدأ بالتعرف على طريقة استخدام الازرار. وبعد اكتمال الرفع ستجد أنه عند الضغط على الزر الموجد في أعلى لوح التجارب سيتم إضاءة الـLED وعند الضغط على الزر الآخر سيتم إطفاءه.

int ledPin = 5;
int buttonApin = 9;
int buttonBpin = 8;
 
byte leds = 0;
 
void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(buttonApin, INPUT_PULLUP);  
  pinMode(buttonBpin, INPUT_PULLUP);  
}
 
void loop()
{
  if (digitalRead(buttonApin) == LOW)
  {
    digitalWrite(ledPin, HIGH);
  }
  if (digitalRead(buttonBpin) == LOW)
  {
    digitalWrite(ledPin, LOW);
  }
}

الجزء الأول من الكود يقوم بتعريف ثلاث متغيرات لثلاث منافذ سيتم استخدامها في الأردوينو.
‘ledPin’ هو منفذ المخرج و ‘buttonApin’ سيستخدم للزر الموجود في أعلى لوح التجارب و ‘buttonBpin’ سيستخدم للزر الآخر.

دالة ‘setup’ ستعرف متغير ‘ledPin’ كمخرج، ولكن سيكون أيضًا لديك مدخلين اثنين (لأجل استخدام الازرار) لذلك قم بإستخدام دالة ‘pinMode’ لإضافة خاصية ‘INPUT_PULLUP’ لكل زر كالتالي:

pinMode(buttonApin, INPUT_PULLUP);
  pinMode(buttonBpin, INPUT_PULLUP);

استخدامنا لـ INPUT_PULLUP يعني أن منفذ الإدخال للزر سيعطي قيمة 1 (قيمة عالية) إذا لم يتم الضغط عليه، بمعنى آخر القيمة الاساسية لمنفذ الإدخال للزر هي 1، وإذا تم الضغط على الزر فستعطي قيمة 0(قيمة منخفضة).

وهذا هو سبب ربط بـ GND . عند الضغط على الزر سيقوم الزر بتوصيل منفذ الإدخال إلى GND وعندها تكون القيمة منخفضة (0)

ولأنك قمت بوضع التصميم بهذه الطريقة، بمعنى أن قيمة الزر عالية ولكن عند الضغط عليه تكون منخفضة، أي العكس لذلك ستبرمجها داخل دالة ‘loop’:

void loop()
{
  if (digitalRead(buttonApin) == LOW)
  {
    digitalWrite(ledPin, HIGH);
  }
  if (digitalRead(buttonBpin) == LOW)
  {
    digitalWrite(ledPin, LOW);
  }
}

داخل دالة ‘loop’ هناك جملتين IF شرطية . جملة شرطية لكل زر تقوم بقراءة ‘digitalRead’ لمدخل الزر (لمعرفة الحالة اذا كانت عالية أو منخفضة).

لتتذكر دائمًا انه عند الضغط على الزر ستكون القيمة منخفضة لذلك سيتم تحقيق الشرط وسيتم اضاءة الـLED وذالك بإعطاء قيمة عالية (1) لـledPin.
كذلك الحال للزر الأخر (بجملة IF  الشرطية الثانية)ولكن سيتم اطفاء الـLED لأننا قمنا بإعطاء قيمة منخفضة(0) لـledPin.

أنشطة أخرى

هناك أمرين يمكنك القيام بها عند استخدام الازرار:

أولاً، يمكنك استخدام ما تعلمته في الدرس السادس واضافة بعض الاوامر عليه؛ لتتمكن من إظهار القيمة على شاشة الاتصال التسلسلي Serial Monitor عند الضغط على الازرار.

عليك استخدام امر الطباعة على الشاشة في الكود داخل دالة loop لإظهار القيمة بالشاشة.

Serial.println(“Button A Pressed”);

كما عليك القيام باضافة وتعريف خدمة الاتصال التسلسلي وذلك عبر اضافة الكود داخل دالة setup:

while (!Serial);
Serial.begin(9600);

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