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

مبتدئ

image_pdf

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

ارفع الكود التالي إلى متحكم الأردوينو لتبدأ بالتعرف على طريقة استخدام الازرار. وبعد اكتمال الرفع ستجد أنه عند الضغط على الزر الموجد في أعلى لوح التجارب سيتم إضاءة الـ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.

X
Product added to the cart