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

פורום זה מכיל תרגום לעברית של מדריכים, דוגמאות קוד, פירוט שפת תכנות לכרטיסי Arduino וחומרים לימודיים אחרים מהאתר arduino.cc

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

הודעהעל ידי Alex » ג' אוגוסט 22, 2017 12:05 pm

פונקציית ()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.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 7459
הצטרף: ה' ינואר 28, 2010 8:27 pm

חזור אל תרגום מדריכים מהאתר arduino.cc

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot]