שמירה על ערכים בטווח
חלק מהיחידה קלטים במסלול ה-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);אתגר
קלהכפתור מחובר ל־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
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה קלטים
תרגלו בעצמכם: Arduino אונליין