הפרעות הן תכונה עוצמתית של בקרי מיקרו המאפשרים לך לטפל באירועים באופן אסינכרוני. בשונה מהסקרים, הבודקים ברציפות על אירועים, הפרעות מגיבות מייד כאשר מתרחש אירוע ספציפי, כגון לחיצה על כפתור או הצפת טיימר. מדריך זה ינחה אותך באמצעות הבנה ושימוש בהפרעות עם Arduino.
מה תצטרך
- Arduino uno (או לוח תואם)
- לחצן לחיצה
- נגד 10K-OHM (לתצורה נשלפת)
- LED ו- 220-OHM נגד (אופציונלי)
- חוטי לחם וגשר
- Arduino IDE המותקן במחשב שלך
שלב 1: מהן הפרעות?
הפרעה מפסיקה באופן זמני את ביצוע התוכנית הראשית לטיפול באירוע ספציפי. לאחר עיבוד האירוע, התוכנית חוזרת למקום בו היא הפסיקה. הפרעות מנוהלות באמצעות פונקציות מיוחדות הנקראות שגרות שירות להפריע (ISRs).
סוגי הפרעות בארדואינו
- הפרעות חיצוניות: מופעל על ידי אירועים על סיכות ספציפיות (למשל, סיכה 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: שימוש בהפרעות שינוי סיכות
הפרעות שינוי סיכות מאפשרות לך לאתר שינויים בכל סיכה דיגיטלית. זה דורש ספריות נוספות, כגון EnableInterrupt.
קוד דוגמה: הפסקת שינוי סיכה
התקנת ספריה
כדי להשתמש בהפרעות שינוי סיכות, התקן את EnableInterrupt ספרייה דרך מנהל הספרייה של ארדואינו.
שלב 4: הפרעות טיימר
הפרעות טיימר מועילות לתזמון משימות במרווחים מדויקים. עיין ב הדרכה לטיימר ארדואינו לפרטים על קביעת תצורת הפרעות טיימר.
דוגמה: מהבהב נורית LED עם הפרעה של Timer1
שלב 5: שיטות עבודה מומלצות לשימוש בהפרעות
- שמור על ISRS קצר: הימנע מעיכובים או חישובים מורכבים ב- ISR כדי להבטיח תגובה מהירה.
- הימנע מתקשורת סדרתית ב- ISRS: פונקציות סדרתיות עשויות שלא לעבוד באופן אמין בתוך ISR.
-
לְהִשְׁתַמֵשׁ
volatile
למשתנים משותפים: סימון משתנים המשותפים בין ISRS לתוכנית הראשית כ- ASvolatile
כדי למנוע בעיות אופטימיזציה של המהדר. - כניסות DebUnce: טפל בהיגיון DebUnce בתוכנה או בחומרה עבור אותות רועשים כמו לחיצות על כפתור.
-
השבת הפרעות במהלך קטעים קריטיים: לְהִשְׁתַמֵשׁ
noInterrupts()
וכןinterrupts()
להגנה על קטעי קוד קריטיים.
יישומי הפרעות
- לחיצות על כפתור הטיפול ללא סקירה
- קריאת מקודדים רוטרי
- תזמון אירועים קריטיים (למשל, בקרה מוטורית מדויקת)
- תזמון משימות תקופתיות
- תגובה לאותות חיצוניים (למשל, חיישנים, אירועי תקשורת)
פתרון בעיות
- להפריע לא להפעיל: ודא שהסיכה והמצב הנכונים מוגדרים.
- התנהגות לא יציבה: חבל אותות רועשים ונמנע מ- ISR ארוכים.
- עימותים עם ספריות: ספריות מסוימות משתמשות בהפרעות באופן פנימי (למשל, סרוו, PWM). להבטיח שום התנגשות עם הקוד שלך.
מַסְקָנָה
הפרעות מאפשרות טיפול מגיב ויעיל באירועים בפרויקטים של ארדואינו. על ידי למידה להשתמש בהפרעות חיצוניות, סיכות וטיימר, אתה יכול ליצור יישומים חזקים ומדויקים. התנסו בסוגים שונים של הפרעות כדי לשפר את הפרויקטים שלכם ולבצע אופטימיזציה של הביצועים!