المقاطعات هي ميزة قوية من متحكمها تسمح لك بالتعامل مع الأحداث بشكل غير متزامن. على عكس الاقتراع ، الذي يتحقق بشكل مستمر للأحداث ، تستجيب المقاطعات فورًا عند حدوث حدث معين ، مثل الضغط على زر أو تدفق مؤقت. سوف يرشدك هذا البرنامج التعليمي من خلال فهم واستخدام المقاطعات مع Arduino.
ماذا ستحتاج
- Arduino Uno (أو لوحة متوافقة)
- زر
- مقاوم 10K-OHM (للتكوين المنسدلة)
- LED و 220 أوم المقاوم (اختياري)
- الأسلاك الأسلاك والبلوز
- Arduino IDE مثبتة على جهاز الكمبيوتر الخاص بك
الخطوة 1: ما هي المقاطعات؟
توقف المقاطعة مؤقتًا عن تنفيذ البرنامج الرئيسي للتعامل مع حدث معين. بمجرد معالجة الحدث ، يستأنف البرنامج حيث توقف. تتم إدارة المقاطعات باستخدام وظائف خاصة تسمى إجراءات خدمة المقاطعة (ISRS).
أنواع المقاطعات في أردوينو
- المقاطعات الخارجية: الناتج عن الأحداث على دبابيس محددة (على سبيل المثال ، PIN 2 أو 3 على Arduino UNO).
- مقاطعات تغيير الدبوس: الناتج عن تغيير على أي دبوس رقمي.
- تقاطعات المؤقت: الناتج عن تدفق الموقت أو مقارنة المباريات.
الخطوة 2: استخدام المقاطعات الخارجية
يدعم Arduino UNO المقاطعات الخارجية على المسامير 2 و 3. يمكنك تكوين هذه المقاطعات لتشغيل:
- ارتفاع: إشارة تذهب من منخفضة إلى عالية.
- هبوط: إشارة تذهب من عالية إلى منخفضة.
- يتغير: تغييرات الإشارة الحالة (منخفضة إلى عالية أو عالية إلى منخفضة).
- قليل: لا تزال الإشارة منخفضة.
رمز مثال: اكتشاف زر اضغط
هذا المثال يبطح LED عند الضغط على زر متصل بـ PIN 2.
توضيح
-
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
: تكوين المقاطعة.-
pin
: دبوس المقاطعة (على سبيل المثال ، دبوس 2 أو 3 على Arduino UNO). -
ISR
: روتين خدمة المقاطعة للتنفيذ. -
mode
: حالة التشغيل (RISING
,FALLING
,CHANGE
، أوLOW
).
-
-
digitalPinToInterrupt(pin)
: يحول رقم دبوس إلى رقم المقاطعة.
الخطوة 3: استخدام مقاطعات تغيير الدبوس
تتيح لك مقاطعات تغيير الدبوس الكشف عن التغييرات على أي دبوس رقمي. هذا يتطلب مكتبات إضافية ، مثل تمكين.
مثال رمز: PIN تغيير المقاطعة
تثبيت المكتبة
لاستخدام مقاطعات تغيير الدبوس ، قم بتثبيت ملف تمكين مكتبة عبر مدير مكتبة Arduino.
الخطوة 4: قاطعات المؤقت
مقاطعات المؤقت مفيدة لجدولة مهام على فترات فترات دقيقة. الرجوع إلى Arduino Timer البرنامج التعليمي للحصول على تفاصيل حول تكوين مقاطعات المؤقت.
مثال: وميض LED مع Timer1 مقاطعة
الخطوة 5: أفضل الممارسات لاستخدام المقاطعات
- تبقي isrs قصيرة: تجنب التأخير أو الحسابات المعقدة في ISRs لضمان استجابة سريعة.
- تجنب الاتصال التسلسلي في ISRS: قد لا تعمل الوظائف التسلسلية بشكل موثوق داخل ISR.
-
يستخدم
volatile
للمتغيرات المشتركة: مارك متغيرات مشتركة بين ISRs والبرنامج الرئيسي مثلvolatile
لمنع مشكلات تحسين التحويل البرمجي. - المدخلات debounce: التعامل مع Debounce منطق في البرامج أو الأجهزة للحصول على إشارات صاخبة مثل الضغط على الزر.
-
تعطيل المقاطعات خلال الأقسام الحرجة: يستخدم
noInterrupts()
وinterrupts()
لحماية أقسام التعليمات البرمجية الحرجة.
تطبيقات المقاطعات
- يضغط زر التعامل دون الاقتراع
- قراءة الترميز الدوار
- توقيت الأحداث الحرجة (على سبيل المثال ، التحكم الدقيق للمحرك)
- جدولة المهام الدورية
- رد فعل على الإشارات الخارجية (على سبيل المثال ، أجهزة الاستشعار ، أحداث الاتصال)
استكشاف الأخطاء وإصلاحها
- مقاطعة لا تؤدي: تأكد من تكوين الدبوس والوضع الصحيحين.
- سلوك غير مستقر: debounce إشارات صاخبة وتجنب isrs طويلة.
- الصراعات مع المكتبات: تستخدم بعض المكتبات المقاطعات داخليًا (على سبيل المثال ، Servo ، PWM). تأكد من عدم الصراع مع الكود الخاص بك.
خاتمة
تتيح المقاطعات التعامل المستجيب والفعال للأحداث في مشاريع Arduino. من خلال تعلم استخدام المقاطعات الخارجية والتغيير الخارجي والمقاطعات ، يمكنك إنشاء تطبيقات قوية ودقيقة. تجربة مع أنواع مختلفة من المقاطعات لتعزيز مشاريعك وتحسين الأداء!