ספריית טיימר Arduino לעיכוב

Spryyt Tyymr Arduino L Ykwb



הטיימר הוא אחד ממרכיבי המפתח של Arduino לטיפול במשימות רגישות לזמן. הטיימרים של Arduino משתמשים בדרך כלל בפונקציית delay() כדי לספק השהייה או השהייה לביצוע לפרקי זמן קטנים. עם זאת, נדרשת ספרייה מיוחדת להשהיית פונקציות עבור ריבוי משימות.

מדריך זה יכסה ספריות טיימר שונות של Arduino לעיכוב עם תיאורים קצרים. לפני כן בואו נבין את המגבלה של פונקציית Arduino delay() .







מגבלות עיכוב()

לא ניתן להשתמש בפונקציה delay() אם ברצונך לבצע משימות שונות בו-זמנית, מכיוון שהיא פונקציית חסימה. זה אומר שבכל פעם שהפונקציה delay() משמשת כדי להשהות ביצוע של משימה, היא לא מאפשרת לשום פונקציה אחרת להפעיל בינתיים. לכן, כאשר מישהו רוצה לעצור תוכנית אחת בזמן הפעלת אחרות, לא ניתן להשתמש ב-delay() .



אז מה לעשות?



ספריית טיימר Arduino לעיכוב שיחות פונקציה

כדי לפתור בעיה זו, עליך להשתמש בספריות מיוחדות המיועדות לביצוע השהיה. ספריות אלו מאפשרות לך להשהות חלק מהפונקציות בתוכנית לזמן מה ולהפעיל אחרות בינתיים. ספריות אלו הן ספריות טיימר שאינן חוסמות ריבוי משימות. ניתן להשתמש בהם כדי לקרוא לפונקציות לפי הצורך.





כיצד לכלול ספריית טיימר Arduino בקוד Arduino

כדי לכלול את ספריית הטיימר תחילה עלינו להוסיף את קובץ ה-zip על ידי מעבר ל- כלול ספרייה סעיף ב- Arduino IDE. לתיאור מפורט של הוספת ספריות Arduino, אתה יכול לקרוא את המאמר בנושא כיצד להתקין ספרייה ב- Arduino IDE .

שלב 1

ראשית, תצטרך להוריד את ספריית הטיימר של Arduino.



שלב 2

לאחר הורדת ספריית הטיימר, פתח את Arduino IDE ועבור אל Sketch ואז Include Library, ולאחר מכן לחץ על הוסף ספריית ZIP.


Arduino יוצג 'ספרייה מותקנת' בפלט.

שלב 3

לאחר שהוספת את ספריית ה-ZIP ל-Arduino IDE, היא תופיע ברשימה הנפתחת של אפשרויות כלול ספרייה ב-Arduino IDE. מכאן כוללים שָׁעוֹן עֶצֶר סִפְרִיָה.


כאשר אתה כולל את 'שָׁעוֹן עֶצֶר' הספרייה, הנחיית הקדם-מעבד תופיע על הסקיצה. אחרת, תוכל לבצע את שלב 4 כדי לכלול את הספרייה באופן ידני.

# לִכלוֹל < טיימר.ח >

שלב 4

כדי לכלול את ספריית טיימר Arduino בקוד Arduino, עליך להשתמש ב- #לִכלוֹל הנחיה יחד עם (.h) שם ספריית טיימר ההרחבה ולאחר מכן צור טיימר כפי שמוצג להלן.

#include
טיימר אוטומטי = timer_create_default ( ) ;


לאחר יצירת טיימר, עליך ליצור פונקציה כדי לקרוא לטיימר זה. ייתכן שיהיה עליך להתקשר לטיימר ברגע מסוים של זמן, לאחר עיכוב קצר, או לאחר מרווח זמן. דוגמאות להתקשרות לטיימרים בתנאים כאלה ניתנות להלן.

למקרה שאתה רוצה עיכוב קצר

timer.in ( delay, function_to_call ) ;
timer.in ( delay, function_to_call, ארגומנט ) ; // או עם טיעון אופציונלי ל פונקציה_להתקשר


במקרה זה, נוכל להשתמש ב- timer.in() פונקציה כדי להציג עיכוב לפני קריאה לפונקציה ספציפית. פרמטר ההשהיה מייצג את הזמן באלפיות שניות שאנו רוצים להמתין לפני ביצוע הקוד.

לאחר העיכוב שצוין, ה פונקציה_להתקשר יהיה בשימוש. ניתן גם להגדיר ארגומנט שיעבור לפונקציה בזמן הקריאה.

במקרה שאתה רוצה להתקשר לטיימר בזמן מסוים

פונקציה זו מגדירה טיימר לביצוע פונקציה ספציפית בזמן מסוים. פרמטר הזמן מציין את השעה שבה יש לקרוא לפונקציה. זה יכול להיות חותמת זמן ספציפית או ערך השהיה באלפיות שניות. ה פונקציה_להתקשר הוא הפרמטר של הפונקציה שאמורה להתבצע לאחר פקיעת הטיימר.

טיימר.at ( זְמַן , function_to_call ) ;
טיימר.at ( זְמַן , function_to_call, ארגומנט ) ; // עם טיעון


timer.at(זמן, function_to_call, ארגומנט) פונקציה יכולה להעביר ארגומנט לפונקציה הנקראת. פרמטר הארגומנט יהיה הערך שיש להעביר בפונקציה.

במקרה שאתה רוצה להתקשר לטיימר לאחר מרווח זמן

במקרה זה, אתה יכול להשתמש בפונקציה timer.every() כדי לקרוא שוב ושוב לפונקציה לאחר מרווח זמן מסוים. פרמטר המרווח מציג זמן באלפיות שניות בין מרווחי זמן הניתנים להפעלה.

ציין את המרווח הרצוי ואת פונקציה_להתקשר ישמש שוב ושוב לאחר מרווח זה. כמו המקרים הקודמים, אתה יכול לכלול ארגומנט אופציונלי שיועבר לפונקציה כאשר היא נקראת.

טיימר.כל ( interval, function_to_call ) ;
טיימר.כל ( interval, function_to_call, ארגומנט ) ; // כתוב את המרווח שלך כאן


אתה יכול ללמוד פרטים נוספים על שיטה זו של שימוש בספריית טיימר לעיכוב קריאות פונקציה דרך הקישור ספריית טיימר Arduino להשהיית פונקציות .

כמה ספריות אחרות לעיכוב ב- Arduino

הקישור המופיע למטה יוביל אותך לספריות הטיימר של Arduino, שם תוכל להתקין את ספריות הטיימר לעיכוב שיחות פונקציה.

ספריית טיימר מאת מייקל קונטררס

יש גם מחבר שסיפק ספריית טיימר Arduino שלא חוסמת את עצמו כדי לעכב שיחות פונקציה. הוא השתמש בפונקציות מובנות של Arduino כמו millis() ו-micros() כדי לבצע פונקציות השהייה ללא חסימה. להלן קישור לספרייה שלו:

מייקל אוריי ספריית טיימר ארדואינו

סיכום

למרות שהפונקציה delay() כבר קיימת ב- Arduino, לא ניתן להשתמש בה לביצוע מספר משימות בו זמנית. כדי לבצע מספר משימות בו-זמנית, ספריות טיימר לא חוסמות נוצרו על ידי קהילת Arduino שניתן להשתמש בהן לפי הצורך.