يوفر Arduino UNO القدرة على التفاعل مع العالم الحقيقي باستخدام دبابيسها الرقمية. يمكنك استخدام هذه المسامير للتحكم في الأجهزة مثل LEDs والمحركات والمرحلات ، أو قراءة المدخلات من أجهزة الاستشعار والأزرار والمفاتيح. سيشرح هذا البرنامج التعليمي كيفية إعداد المسامير الرقمية ، وإجراء عمليات القراءة والكتابة ، والاستفادة منها if
بيانات القرارات القائمة على المنطق في مشاريعك.
ماذا ستحتاج
- Arduino Uno مع كابل USB
- LED ومقاوم 220 أوم (لأمثلة الإخراج)
- زر الضغط ومقاوم 10 كيلو أوم (لأمثلة الإدخال)
- الأسلاك الأسلاك والبلوز
- جهاز كمبيوتر مع 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
بيانات المنطق المشروط. تمكنك هذه المهارات الأساسية من التحكم في مجموعة واسعة من مكونات الأجهزة وإنشاء مشاريع تفاعلية مستجيبة. التجربة أكثر من خلال الجمع بين مدخلات ومخرجات متعددة لسلوك أكثر تعقيدًا!