Servo.write – הסבר ופרטים

- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -

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

פרמטרים

value, מטיפוס int, קובע את אות הבקרה בהתאם לכללים הבאים (ולפי הסדר):

  1. אם הערך של value גדול או שווה לערך המינימום שהוגדר עבור הסרבו (ראו פרמטר min של הפונקציה Servo.attach), קפוץ לשלב 4.
  2. אם הערך קטן מ-0 הוא מוגדר מחדש כ-0, ואם הוא גדול מ-180 הוא מוגדר מחדש כ-180.
  3. הערך עובר מיפוי-מחדש (בעזרת הפונקציה map) מסקאלה של 0-180 מעלות לסקאלה של מיליוניות השניה, בין ערך המינימום וערך המקסימום שהוגדרו עבור הסרבו.
  4. הערך, שמייצג כעת מיליוניות שנייה, מותאם להפעלה אוטומטית בפונקציה המובנית שמחוללת את אותות הבקרה עבור מנועי סרבו.

ערך חוזר

אין

דוגמאות

// Include Servo library
#include <Servo.h>

// Create class instance
Servo myServo; 

// ... 
myServo.attach(8);
myServo.write(90);

הערות

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

קישורים רלוונטיים

בלוג אישי בנושאי מייקינג, תכנות, מיקרו-בקרים ואלקטרוניקה