Menu
CoddyTech

שמירה על ערכים בטווח

חלק מהיחידה קלטים במסלול ה-Arduino של Coddy. שיעור 11 מתוך 22.

לפעמים צריך להביא בחשבון רק חלק מטווח. נניח שרק החלק האמצעי של מהלך הכפתור חשוב, כלומר קריאות מ־200 עד 800, וזה אמור להיות 0 עד 100 אחוז:

int percent = map(reading, 200, 800, 0, 100);

כך מתקבלים 0 ב־200 ו־100 ב־800, אבל map() לא עוצרת בקצות הטווח. קריאה של 0 נותנת ‎-33, ו־1023 נותנת 137. אחוז נמוך מ־0 או גבוה מ־100 אינו הגיוני.

constrain(x, low, high) משאירה מספר בתוך טווח: כל ערך שמתחת ל־low הופך ל־low, כל ערך שמעל high הופך ל־high, וכל מה שביניהם נשאר כפי שהוא.

percent = constrain(percent, 0, 100);
challenge icon

אתגר

קל

הכפתור מחובר ל־A0. הדפס אחוז, כך שקריאות בין 200 ל־800 ייחשבו כטווח של 0 עד 100:

  • מפה את הקריאה מ־200 עד 800 לטווח של 0 עד 100
  • הגבל אותה בין 0 ל־100 באמצעות constrain()
  • הדפס אותה, ואז המתן 100 ms

לחץ על Run, סובב את הכפתור עד הסוף בשני הכיוונים, ואז לחץ על Check.

נסו בעצמכם

void setup() {
  Serial.begin(9600);
}

void loop() {
  int reading = analogRead(A0);
  // מפה את 200..800 לטווח 0..100, שמור את התוצאה בטווח 0..100, הדפס אותה והמתן 100 ms
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה קלטים

תרגלו בעצמכם: Arduino אונליין