- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -
הפונקציה map(x, in_min, in_max, out_min, out_max) ממירה ערך מסקאלה (סולם ערכים) מסוימת לסקאלה אחרת. אפשר לחשוב על המרה כזו כעל הזזה ו/או כיווץ/מתיחה של ציר המספרים.
התרחיש הנפוץ לשימוש ב-map הוא כאשר מתקבל ממקור מסוים ערך בטווח ידוע, וצריך להעביר את הערך הזה – ליתר דיוק, את מה שהוא מייצג – ליעד שמצפה לערכים בטווח שונה. קיראו בתשומת לב את ההערות בהמשך.
פרמטרים
x הוא הערך הספציפי שרוצים להמיר מסקאלה אחת לאחרת. מטיפוס long.
in_min הוא ערך נמוך בסקאלה שבה x מוגדר – יכול אך לא חייב להיות המינימום המוחלט. מטיפוס long.
in_max הוא ערך גבוה בסקאלה שבה x מוגדר – יכול אך לא חייב להיות המקסימום המוחלט. מטיפוס long.
out_min הוא הערך המקביל ל-in_min, בסקאלה החדשה שאליה מתבצעת ההמרה. מטיפוס long.
out_max הוא הערך המקביל ל-in_max, בסקאלה החדשה שאליה מתבצעת ההמרה. מטיפוס long.
ערך חוזר
הערך של הפרמטר x אחרי המרה לסקאלה החדשה. מטיפוס long.
דוגמאות
int a = analogRead(A2); long a0To100 = map(a, 0, 1024, 0, 101);
הערות
- ניתן לעבוד גם עם ערכים שליליים בסקאלות השונות.
- הפונקציה map אינה תוחמת את הערכים. אם ערך הפרמטר x יהיה מחוץ לטווח in_min עד in_max, הערך החוזר יהיה מחוץ לטווח out_min עד out_max, באותו יחס.
- בגלל נוסחת החישוב ב-map, כאשר טווח הפלט קטן מטווח הקלט, ערך out_max יתקבל אך ורק עבור הערך in_max, וזאת לעומת out_min שיכול להתקבל עבור מספר רב של ערכים קרובים ל-in_min. כלומר, התפלגות ערכי הפלט אינה אחידה. דרך פשוטה ו“מלוכלכת” לתקן את הבעיה היא להוסיף 1 ידנית הן לפרמטר in_max והן לפרמטר out_max שנשלחים לפונקציה. לפירוט נוסף, ראו כאן.