facebook pixel מדריך: פירוט שפת תכנות - מתמטיקה - ()map - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

פירוט שפת תכנות - מתמטיקה - ()map


2022-06-14 09:54:15
פונקציית ()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.