القراءة الرقمية والكتابة باستخدام Arduino Uno

Digital Read and Write Using the Arduino Uno

يوفر Arduino UNO القدرة على التفاعل مع العالم الحقيقي باستخدام دبابيسها الرقمية. يمكنك استخدام هذه المسامير للتحكم في الأجهزة مثل LEDs والمحركات والمرحلات ، أو قراءة المدخلات من أجهزة الاستشعار والأزرار والمفاتيح. سيشرح هذا البرنامج التعليمي كيفية إعداد المسامير الرقمية ، وإجراء عمليات القراءة والكتابة ، والاستفادة منها if بيانات القرارات القائمة على المنطق في مشاريعك.


ماذا ستحتاج

  1. Arduino Uno مع كابل USB
  2. LED ومقاوم 220 أوم (لأمثلة الإخراج)
  3. زر الضغط ومقاوم 10 كيلو أوم (لأمثلة الإدخال)
  4. الأسلاك الأسلاك والبلوز
  5. جهاز كمبيوتر مع Arduino IDE مثبت

الخطوة 1: إعداد دبابيس رقمية

أوضاع الدبوس الرقمية

Arduino UNO لديه 14 دبابيس رقمية (D0-D13). يمكن تكوين هذه المسامير على النحو التالي:

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

استخدم pinMode() وظيفة لتعيين وضع دبوس في setup() وظيفة:

pinMode(pinNumber, mode);
  • pinNumber: الدبوس الذي تريد تكوينه (على سبيل المثال ، 2 ، 3 ، إلخ).
  • mode: أيضاً INPUT, INPUT_PULLUP، أو OUTPUT.

الخطوة 2: الكتابة إلى دبوس رقمي

يمكنك التحكم في الأجهزة عن طريق الكتابة HIGH أو LOW إلى دبوس الإخراج باستخدام digitalWrite() وظيفة:

digitalWrite(pinNumber, value);
  • value: أيضاً HIGH (5v) أو LOW (0V).

مثال: يومض LED

إليك كيفية وميض LED متصل بـ PIN 13:

#define ledPin 13 // LED connected to pin 13

void setup() {
  pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}

void loop() {
  digitalWrite(ledPin, HIGH); // Turn the LED on
  delay(1000);               // Wait for 1 second
  digitalWrite(ledPin, LOW);  // Turn the LED off
  delay(1000);               // Wait for 1 second
}

الخطوة 3: القراءة من دبوس رقمي

لقراءة حالة دبوس ، استخدم digitalRead() وظيفة:

int state = digitalRead(pinNumber);
  • state: سيكون إما HIGH أو LOW بناء على إشارة الدخل.

مثال: قراءة زر اضغط

قم بتوصيل زر الضغط إلى دبوس 2 بمقاوم المنسدلة (10K-OHM). عند الضغط ، سيرسل الزر ملف HIGH إشارة.

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

void setup() {
  pinMode(buttonPin, INPUT); // Set pin 2 as an input
  pinMode(ledPin, OUTPUT);   // Set pin 13 as an output
}

void loop() {
  int buttonState = digitalRead(buttonPin); // Read the button state

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on the LED if the button is pressed
  } else {
    digitalWrite(ledPin, LOW); // Turn off the LED otherwise
  }
}

الخطوة 4: باستخدام if بيانات مع دبابيس رقمية

if تتيح لك العبارات إنشاء منطق مشروط في البرنامج. اجمع بين القراءات الرقمية ويكتب لأداء الإجراءات بناءً على المدخلات.

مثال: تبديل LED على زر اضغط

هذا الرسم يتبديل حالة LED في كل مرة يتم فيها الضغط على الزر:

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

bool ledState = false; // Current state of the LED
bool lastButtonState = LOW; // Previous state of the button

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  bool currentButtonState = digitalRead(buttonPin);

  if (currentButtonState == HIGH && lastButtonState == LOW) {
    ledState = !ledState; // Toggle the LED state
    digitalWrite(ledPin, ledState ? HIGH : LOW);
  }

  lastButtonState = currentButtonState; // Update the button state
  delay(50); // Debounce delay
}

الخطوة 5: الاستخدام المتقدم مع العمليات المنطقية

يمكنك استخدام متعدد if البيانات ، else ifوالمشغلين المنطقيين (&&, ||، وما إلى ذلك) لإنشاء سلوكيات أكثر تعقيدًا.

مثال: التحكم متعدد المدخلات

السيطرة على LED بناءً على حالات زريين:

#define button1 2 // Button 1 connected to pin 2
#define button2 3 // Button 2 connected to pin 3
#define ledPin 13 // LED connected to pin 13

void setup() {
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  bool button1State = digitalRead(button1);
  bool button2State = digitalRead(button2);

  if (button1State == HIGH && button2State == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on LED if both buttons are pressed
  } else {
    digitalWrite(ledPin, LOW); // Turn off LED otherwise
  }
}

استكشاف الأخطاء وإصلاحها

  • LED لا يضيء:

    • تأكد من توصيل LED بشكل صحيح (الساق الطويلة إلى الدبوس الإيجابي).
    • استخدم مقاوم 220 أوم لتجنب الضرر.
  • الزر لا يستجيب:

    • تحقق من الأسلاك المناسبة مع المقاوم المنسدلة أو السحب.
    • تحقق من ضبط pinmode على INPUT أو INPUT_PULLUP.
  • قضايا Debounce:

    • استخدم تأخيرًا صغيرًا أو تنفيذ آلية Debounce للبرنامج للتعامل مع ضوضاء الإشارة من الأزرار الميكانيكية.

خاتمة

لقد تعلمت كيفية إجراء عمليات القراءة والكتابة الرقمية مع Arduino UNO ، وتكوين أوضاع الدبوس ، والاستخدام if بيانات المنطق المشروط. تمكنك هذه المهارات الأساسية من التحكم في مجموعة واسعة من مكونات الأجهزة وإنشاء مشاريع تفاعلية مستجيبة. التجربة أكثر من خلال الجمع بين مدخلات ومخرجات متعددة لسلوك أكثر تعقيدًا!

اترك تعليقًا

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.