()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.