שיעור 9

חיישני קו הסיום

השלמנו את הפעולות הקשורות לזינוק ועכשיו הגיע הזמן לעבור לקו הסיום.

בשיעור זה אנחנו נפעיל את המסכים והחיישנים של קו הסיום!

שלב 1: סידור הקוד

לפני שנתחיל, נגרום לקוד שלנו להיות קצת יותר מסודר.

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

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

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

המטרה שלנו היא לקבץ את כל מה שקשור לזינוק תחת הבלוק הזה,
ולכן נגרור את מה שקשור לזינוק אל מתחת להגדר זינוק.
בצעו את השינויים על פי הסרטון(ממש בקרוב תבינו מה הולך פה): 

חשוב!

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

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

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

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

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

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

 

שלב 2: חיבור קו הסיום

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

 

מה יש לנו בקו הסיום? קו הסיום מורכב מלוח אלקטרוני בצבע שחור עליו יש:

– שני מסכי 7 סיביות
– שני חיישני אינפרה אדום
– מחבר לכבל רשת

 

נתחיל מלהפעיל את מסכי ה7סיביות, המסכים הללו נקראים כך מכיוון שכל סיפרה בהם מורכבת מ7 קווים קטנים שהשילובים שלהם יכולים ליצור ספרות שונות מ0 ועד 9.

 

שלב 3:  הפעלת מסכי 7 סיביות

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

השלב הזה של ההגדרה נדרש כשמשתמשים ברכיבים מתקדמים יותר כמו מסכים ולא נדרש כשמתשמשים ברכיבים פשוטים יותר כמו סרבו ומנורות לד.

בצעו את השינויים בקוד כפי שמתואר בסרטון:

מכיוון שיש לנו שני מסכים אנחנו נותנים לכל מסך מספר 1 ו2 ובהמשך נוכל להגיד לארדואינו מה להציג במסך 1 ומה להציג במסך 2.

שלב 4: הצגת מספר

נציג את הסיפרה 1, במסך מספר 1 ואת הסיפרה 2 במסך מספר 2.

בצעו את השינויים בקוד:

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

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

לקו הסיום שלנו יש שני חיישנים אינפרה אדומים (אחד לכל מסילה).

 

מה זה אור אינפרה-אדום?

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

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

איך החיישן האינפרה-אדום שלנו עובד?

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

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

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

איך מתבצע הזיהוי?

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

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

במילים אחרות:
אם החיישן מזהה אור אינפרה אדום – יש מכונית על המסלול
אם החיישן לא מזהה אור אינפרה אדום – אין מכונית על המסלול

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

שלב 5: הדפסת ערך חיישן

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

בצעו את השינויים בקוד על פי הסרטון(מיד נסביר את הקוד):

מה קורה כאן?

כשארדואינו עולה/נדלק הוא יקרא את הערך של החיישן הימני וידפיס ערך זה על המסך הימני.

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

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

ההבדל בין קריאה אנלוגית לדיגיטלית

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

כשארדואינו מבצע קריאה דיגיטלית של חיישן הוא מקבל ערך "1" או "0" , יש רק שתי אפשרויות, כשהיה מדובר בכפתור זה היה לנו מאוד נוח, כי רצינו לדעת אם הכפתור נלחץ או לא. 

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

שלב 6: הדפסה מתמשכת

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

בסרטון הבא תוכלו לראות איך הערך שמודפס על המסך משתנה בהתאם לכמות האור האינפרה אדום שחוזרת אל החיישן:

ממשיכים!

למדנו להשתמש במסכי 7 סביות ובחיישנים האינפרה אדומים, בשיעור הבא שנתמש בשני הרכיבים הללו על מנת להכריז על המנצח של המרוץ!