דלגו לתוכן המרכזי
KitLab
שיעור קודם
לעקוב אחרי האור — חיישן האור והתנאי הראשון· 5 / 16
לעקוב אחרי האור — חיישן האור והתנאי הראשון
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

לעקוב אחרי האור — חיישן האור והתנאי הראשון

מה בשיעור?

  • איך micro:bit מודד אור בלי חיישן ייעודי
  • האפקט הפוטואלקטרי בשפה פשוטה
  • תנאי if / then / else — הרעיון המרכזי
  • משימה: רובוט שרודף אחרי פנס

היער

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

אתם שואלים: "אין פה שלטים ואין שבילים. לאן הולכים?"

המפקח לומי מסתכל סביבו וחושב רגע. "נראה שהאור שחודר בין העלים מוביל לאנשהו. בואו נלך קודם לכיוון המואר. עכשיו תגרמו ל-TinkerBott לעקוב אחרי מקור האור בעצמו."


הידע שצריך

חיישן האור של micro:bit — טריק חכם

ל-micro:bit אין חיישן אור נפרד. אז איך הוא מודד אור?

התשובה מפתיעה: הוא משתמש בנורות ה-LED של המסך עצמו — בכיוון ההפוך.

מסך ה-LED עובד גם כחיישן אור

בחיישן אור רגיל יש רכיב פוטו-אלקטרי (נגד תלוי אור או פוטודיודה) שמשנה את ההתנגדות שלו לפי כמות האור שנופלת עליו. זה נקרא האפקט הפוטואלקטרי.

וכאן הטריק: נורת LED יודעת לעבוד גם בכיוון ההפוך. ה-micro:bit מעביר את 25 הנורות למצב פוטודיודה, ומודד את הזרם ההפוך שנוצר בהן. כשאור פוגע בנורה, הפוטונים מעוררים את מוליך למחצה ויוצרים זרם — וככל שהאור חזק יותר, הזרם גדול יותר.

התוצאה מתורגמת למספר בטווח 0 עד 255. ככל שהערך גדול יותר, האור חזק יותר.


משימה: לעקוב אחרי האור

ההתנהגות שצריך לתכנת:

  • הרובוט לא מזהה אור → מסתובב במקום ומחפש
  • הרובוט מזהה אור → נוסע קדימה לכיוונו

תרשים הזרימה

תרשים זרימה — חיפוש אחרי אור

שימו לב למבנה: יש שאלה באמצע — האם עוצמת האור גדולה מ-100? — ושתי תשובות אפשריות שמובילות לפעולות שונות. זו בדיוק התבנית שנקראת תנאי, והיא הרעיון החדש של השיעור הזה.

אבני הקוד

אבן light level

light level — קוראת את עוצמת האור, מ-0 עד 255. נמצאת ב-Input (קלט).

אבן if / then / else

if ... then ... else — אבן תנאי. אם התנאי מתקיים, רץ מה שבחלק ה-then. אם לא — רץ מה שב-else. נמצאת ב-Logic (לוגיקה).

אבן השוואה

אבן השוואה — משווה שני מספרים ומחזירה נכון או לא נכון. גם היא ב-Logic. זו האבן שנכנסת לתוך החור המשושה של ה-if.

התוכנית

התוכנית של שיעור 5

התוכנית קוראת את light level בכל סיבוב של הלולאה ומחליטה מחדש. אם האור מעל 100 — קדימה במהירות 100%. אחרת — פנייה שמאלה במהירות 30%, כלומר סיבוב איטי במקום, עד שהאור יימצא.

למה 100? זה סף שרירותי שמתאים לחדר ממוצע. אם החדר שלכם מואר מאוד, הרובוט "יחשוב" שהוא תמיד רואה אור ופשוט ייסע ישר. אם חשוך מדי — הוא יסתובב בלי סוף. הסף הזה הוא הדבר הראשון שכדאי לכוונן.

מריצים

טענו את התוכנית, כבו את האור בחדר, וכוונו אליו פנס של טלפון.

הרובוט עוקב אחרי הפנס

הרובוט מסתובב עד שהוא "רואה" את הפנס, ואז נוסע לכיוונו. תזיזו את הפנס — והוא ירדוף אחריו.


וזה מוביל אותנו קדימה

בעזרתכם הרובוט מוביל את המפקח לומי אל האזורים המוארים ביער.

מה יחכה להם שם?


נסו בעצמכם

  • מצאו את ערך ה-light level בחדר שלכם: בנו תוכנית קטנה עם show number (light level). מה המספר בחושך? ומה מול הפנס?
  • לפי מה שמצאתם — כוונו את הסף 100 לערך שמתאים לחדר שלכם.
  • החליפו את הסימן מ-> ל-<. מה עושה עכשיו הרובוט? (רמז: הוא בורח מהאור)
  • הוסיפו תנאי שלישי: אם האור חזק מאוד (מעל 200) — הרובוט עוצר. איך מוסיפים ענף נוסף ל-if?

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

נשלח למייל את קובצי הקוד, החומרים ועדכונים על שיעורים חדשים. בלי ספאם.