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

זה נקרא אור רץ. וזה הרבה יותר פשוט ממה שזה נראה.
בשיעור 1 הדלקנו נורית אחת. עכשיו נחבר חמש, נדליק אותן אחת-אחת לפי הסדר, וניצור אשליה של אור שזורם כמו מים.
הידע שצריך
1. אף דבר שם לא זז
זו הנקודה החשובה בשיעור, אז נאמר אותה בבירור: שום דבר לא זז. הנורית השנייה לא מקבלת שום אור מהראשונה. כל נורית פשוט נדלקת לרגע קצר ונכבית, וכשזה קורה בסדר הנכון — המוח שלכם ממציא את התנועה.
יש שלושה תנאים כדי שזה יעבוד:
(1) כל נורית לפין משלה. חמש נוריות מחוברות לחמישה פינים שונים בלוח, ולכן הלוח יכול להדליק ולכבות כל אחת בנפרד, בלי לגעת בשאר.
(2) מדליקים וכובים בזו אחר זו. מדליקים את מספר 1, ממתינים קצת, מכבים אותה, ומיד מדליקים את מספר 2. וכך הלאה עד מספר 5, ואז מתחילים מהתחלה.
(3) ההמתנה היא זו שיוצרת את הקצב. בלי המתנה הכול היה קורה כל כך מהר שהעין הייתה רואה חמש נוריות דלוקות יחד, בערפול. ההמתנה היא מה שהופך רצף הדלקות למקצב.
2. תמונת שארית — למה זה עובד
העין שלנו איטית. כשאור נכנס אליה, התמונה נשארת במוח עוד כעשירית שנייה אחרי שהאור כבר כבה. התופעה הזו נקראת תמונת שארית (persistence of vision).
בגלל זה כשמסובבים מהר חבל עם קצה בוער רואים עיגול אש שלם, ולא נקודה. בגלל זה סרט הוא בעצם רצף של תמונות נפרדות, ואנחנו רואים תנועה חלקה.
אצלנו זה עובד כך: כשהנורית השנייה נדלקת, הראשונה עדיין "בוערת" במוח שלכם למרות שהיא כבר כבויה. שתי התמונות מתחברות — והמוח מסיק שהאור עבר מהראשונה לשנייה.
3. בלוק ההמתנה

wait [200] milliseconds — בלוק כחול. הוא עוצר את התוכנית למשך הזמן שכתוב בתיבה, ואז ממשיך לבלוק הבא.
מילישנייה היא אלפית השנייה. אז 200 מילישניות הן חמישית השנייה — פחות מהרף עין, אבל מספיק כדי שהעין תספיק לקלוט כל נורית בנפרד.
המספר הזה הוא בלם המהירות של כל הפרויקט. מספר גדול יותר — האור זוחל. מספר קטן יותר — הוא דוהר.
החיבור

חמש פעמים אותו מעגל בדיוק, זה ליד זה. כל מעגל בנוי מפין, נגד, נורית ו-GND:
| נורית | פין | נגד |
|---|---|---|
| LED1 | IO5 | 220Ω |
| LED2 | IO16 | 220Ω |
| LED3 | IO17 | 220Ω |
| LED4 | IO18 | 220Ω |
| LED5 | IO19 | 220Ω |

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

התוכנית נראית ארוכה ומפחידה — 20 בלוקים. אבל היא לא באמת ארוכה, כי אותם שלושה בלוקים חוזרים חמש פעמים, עם מספר פין אחר בכל פעם.
התבנית שחוזרת
set digital pin [5] to [high] — מעלה את פין 5 למתח גבוה. הנורית הראשונה נדלקת.
wait [200] milliseconds — עצירה של חמישית שנייה. זה הזמן שבו העין קולטת שהנורית דלוקה.
set digital pin [5] to [low] — מוריד את פין 5 למתח נמוך. הנורית כבית.
וזהו. עכשיו אותו דבר בדיוק עם פין 16, אחר כך 17, אחר כך 18, ולבסוף 19.
שני התפריטים בבלוק
לבלוק set digital pin [ ] to [ ] יש שני תפריטים נפתחים, וכדאי להכיר את שניהם היטב:
- התפריט הראשון הוא מספר הפין — לאיזה חיבור בלוח הפקודה מדברת. הוא חייב להתאים בדיוק למקום שאליו נעוץ החוט.
- התפריט השני הוא המצב: high פירושו מתח גבוה, כלומר הנורית נדלקת; low פירושו מתח נמוך, כלומר כבית.
העטיפה
כל 20 הבלוקים יושבים בתוך forever — בלוק כתום גדול שזרועו מקיפה את כל מה שבפנים. כשהתוכנית מגיעה לתחתית, החץ בקצה מחזיר אותה אל ההתחלה.
בלי forever האור היה רץ מקצה לקצה פעם אחת בלבד, בתוך שנייה, ואז הכול היה נשאר חשוך. איתו הריצה חוזרת על עצמה בלי סוף.
מריצים
⬇ להורדת הקובץ Running_light.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.
ההסבר המלא על צריבה נמצא בשיעור ההתקנה.
מיד אחרי הצריבה האור מתחיל לרוץ משמאל לימין, שוב ושוב:

נורית אחת לא נדלקת? בדקו שלושה דברים: שהיא לא נעוצה הפוך, שהנגד שלה באמת נוגע בשתי השורות הנכונות, ושמספר הפין בבלוק זהה למקום שאליו נעוץ החוט.
מה קרה כאן
הלוח עשה דבר אחד בלבד, חמש פעמים: הדליק פין, חיכה, כיבה אותו. אין בתוכנית שום מושג של "תנועה" ושום בלוק שאומר "זרום".
האשליה כולה נוצרת בראש שלכם. התוכנית סיפקה תזמון; העין והמוח הוסיפו את התנועה. זה רעיון גדול, והוא חוזר בכל הקולנוע, בכל אנימציה ובכל מסך שראיתם אי פעם.
תרגילים
שנו את המהירות. החליפו את כל בלוקי wait [200] milliseconds ל-50. עכשיו נסו 600. באיזה מספר האור מפסיק להיראות כמו זרימה ומתחיל להיראות כמו חמש נוריות שמהבהבות בנפרד? זה הגבול של תמונת השארית שלכם.
הפכו את הכיוון. גררו את הבלוקים כך שהסדר יהיה 19, 18, 17, 16, 5 במקום 5, 16, 17, 18, 19. האור ירוץ לכיוון השני.
הלוך ושוב. אחרי הרצף הקיים, הוסיפו בתוך אותו forever רצף נוסף בסדר הפוך — 18, 17, 16, 5. קיבלתם אור שנוסע קדימה ואחורה, בדיוק כמו בנורות של מכונית מרוץ.
אתגר — שתי נוריות יחד. שנו את התוכנית כך שבכל שלב שתי נוריות סמוכות דלוקות בו-זמנית. רמז: אל תכבו נורית מיד אחרי ההמתנה — כבו אותה רק אחרי שהדלקתם את הבאה אחריה.


