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

העגלה ריקה

לפי הנחיות פיקוד העורף, עקב המצב הביטחוני, המחסן סגור.
נוכל לטפל בהזמנות שלכם לאחר שהמצב ירגע וינתן אישור להפעיל מקומות עבודה לא חיוניים.
יחד ננצח!

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


2024-11-25 14:54:32
פונקציית ()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.