()map "ממפה" או מעבירה ערך של מספר מתחום אחד לתחום אחר. מה שאומר שמספר בערך fromLow יהפוך ל-toLow, מספר בערך fromHigh יהפוך ל-toHigh ומה שבין fromLow ל-fromHigh יהפוך לערך יחסי בין toLow ל-toHigh.הפונקציה לא מגבילה את טווח הערכים מכיוון שלמספרים מחוץ לטווח לפעמים יש שימוש אחר. תוכלו להשתמש בפונקציה
()constrain כדי להגביל את הטווח. תוכלו לקרוא לפונקציה זו לפני או אחרי קריאה ל-()map.שימו לב כי הגבול התחתון של התחומים יכול להיות גדול יותר מהגבול העליון, כך שאפשר להשתמש בפונקציית
()map כדי להפוך את טווח המספרים, לדוגמה:- קוד: בחר הכל
y = map(x, 1, 50, 50, 1);
פונקציה מטפלת היטב גם במספרים השליליים, כך שדוגמה הבאה תקינה ותעבוד היטב:
- קוד: בחר הכל
y = map(x, 1, 50, 50, -100);
פונקציית
()map עובדת רק עם מספרים שלמים, כך שהיא לא תפיק שברים. שאריות מעבר למספרים השלמים מקוצצות, המספרים לא מעוגלים ולא מחושבים ממוצעים.תחביר
- קוד: בחר הכל
map(value, fromLow, fromHigh, toLow, toHigh);
פרמטרים:
value - מספר שצריך לעבור מיפוי
fromLow - הגבול התחתון של התחום הנוכחי של value
fromHigh - הגבול העליון של התחום הנוכחי של value
toLow - הגבול התחתון של התחום החדש
toHigh - הגבול העליון של התחום החדש
הפונקציה מחזירה את הערך הממופה לתחום החדש.
דוגמה
- קוד: בחר הכל
/* Map an analog value to 8 bits (0 to 255) */
void setup() {}
void loop()
{
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
נספח
למי שמתעניין במתמטיקה, זאת הפונקציה בשלמותה:- קוד: בחר הכל
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
ראו גם:
()constrainפירוט שפת תכנות לסביבת Arduino
עמוד זה הוא תרגום של ()map לפי רישיון Creative Commons Attribution-ShareAlike 3.0.