מה נלמד כאן
- איך מסך בונה אות מתוך נקודות קטנות
- מה זה מסך LCD1602 וכמה טקסט נכנס בו
- מה זה חיבור I2C ולמה מספיקים בו שני חוטים
- הבלוק LCD x [0] y [0] show string [ ] — הבלוק שכותב על המסך
- לכתוב שתי שורות טקסט משלכם
כל מכשיר רוצה לדבר איתכם
המעלית מראה באיזו קומה אתם. תחנת האוטובוס אומרת שהקו מגיע בעוד שלוש דקות. מכונת השתייה כותבת "בחר מוצר". מיקרוגל סופר לאחור.

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

השם מסביר את עצמו: 16 תווים ברוחב, 2 שורות בגובה. סך הכול 32 תווים על המסך בבת אחת — פחות מהודעת וואטסאפ קצרה, ובדיוק מספיק בשביל "Temp: 24C" או "Door Open".
מה אפשר לכתוב עליו? אותיות אנגליות גדולות וקטנות, ספרות 0 עד 9, וסימנים כמו נקודתיים, סימן שאלה, פלוס ומינוס.
⚠️ עברית לא תעבוד. המסך הזה לא מכיר אותיות עבריות — הן פשוט אינן קיימות בתוכו. כתבו באנגלית או בספרות.
2. איך נוצרת אות על המסך
כל תו על המסך יושב בתוך ריבוע של נקודות זעירות — 5 נקודות ברוחב ו-8 בגובה. כל נקודה יכולה להיות דלוקה או כבויה, ומזה בונים כל אות.

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

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

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

ארבעה חוטים, וזהו:
| רגל במסך | לאן מחברים |
|---|---|
| SCL | חיבור SCL בלוח |
| SDA | חיבור SDA בלוח |
| VCC | 5V |
| GND | GND |
בלוח ה-ESP32 של הערכה יש חיבורים שכתוב עליהם ממש SDA ו-SCL, ליד הפינה השמאלית העליונה. אין כאן ניחושים — מחברים שם, ובלוח הניסוי אין צורך בכלל.

⚠️ 5V ולא 3.3V. המסך צורך יותר חשמל מנורית, כי צריך להאיר את כל התאורה האחורית. בחיבור ל-3.3V הוא או שיהיה חיוור מאוד או שלא יידלק כלל.
הבלוקים

התוכנית כולה היא שני בלוקים. זה הכול.

LCD x [0] y [0] show string [ ] — בלוק כחול מקבוצת Robots. יש בו שלוש תיבות, ולכל אחת תפקיד משלו:
- x — באיזו עמודה מתחיל הטקסט. 0 הוא הקצה השמאלי, 15 הוא הקצה הימני.
- y — באיזו שורה. 0 היא השורה העליונה, 1 היא התחתונה. יש רק שתיים.
- show string — מה לכתוב. כותבים בתיבה טקסט חופשי.
שימו לב שהספירה מתחילה מאפס ולא מאחת. זה מבלבל בהתחלה, אבל ככה סופרים כמעט בכל שפת תכנות. העמודה הראשונה היא 0, השנייה היא 1, וכך עד 15.
בתוכנית שלנו יש שני בלוקים כאלה, זה מתחת לזה:
LCD x [0] y [0] show string [ACEBOTT] — עמודה 0, שורה עליונה, המילה ACEBOTT.
LCD x [0] y [1] show string [Hello World!] — עמודה 0, שורה תחתונה, המשפט Hello World!.
שני הבלוקים יושבים ישר מתחת ל-start the program — ואין כאן forever. למה? כי טקסט על מסך LCD נשאר שם. כתבתם פעם אחת, והוא ממשיך להופיע עד שתכבו את החשמל או תכתבו משהו אחר במקומו. אין שום סיבה לכתוב אותו שוב ושוב אלפי פעמים בשנייה.
זה הבדל חשוב מהשיעורים הקודמים: נורית שמהבהבת חייבת forever, כי מישהו צריך להדליק ולכבות אותה כל הזמן. מסך לא.
מריצים
⬇ להורדת הקובץ LCD1602.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.
ההסבר המלא על צריבה נמצא בשיעור ההתקנה.
מיד אחרי הצריבה המסך יידלק בכחול, ועליו יופיעו שתי שורות:

לא רואים כלום? עברו על שלוש הבדיקות האלה, לפי הסדר:
- הבורג הכחול בגב — סובבו אותו לאט לשני הכיוונים. ברוב המקרים זה הפתרון.
- החוטים SDA ו-SCL — קל מאוד להחליף ביניהם. החליפו ונסו שוב.
- חיבור החשמל — ודאו ש-VCC נמצא ב-5V.
מה קרה כאן
הלוח שלח דרך שני חוטים בלבד את המילה ACEBOTT, אות אחרי אות. השבב שבגב המסך קיבל כל אות, תרגם אותה לטבלת נקודות בגודל 5 על 8, והדליק את הנקודות הנכונות במקום הנכון. אז הגיעה ההודעה השנייה — ואותו דבר קרה בשורה מתחת.
מעכשיו יש לפרויקטים שלכם קול. בשיעורים הבאים נחבר את המסך לחיישנים: טמפרטורה, מרחק, לחות. במקום להסתכל במסך הטורי במחשב, תקראו את המספר ישירות מהמסך של הפרויקט.
תרגילים
כתבו את השם שלכם. שנו את הטקסט בתיבה של הבלוק הראשון מ-ACEBOTT לשם שלכם באנגלית, ואת השני למשהו שאתם רוצים להגיד. צרבו וראו.
הזיזו את הטקסט למרכז. שנו את x בבלוק הראשון מ-0 ל-5. שימו לב שהטקסט זז ימינה. מה קורה אם תכתבו x=14 עם מילה ארוכה? נסו וראו מה קורה לאותיות שנגמר להן המקום.
החליפו שורות. שנו את y בבלוק הראשון ל-1 ואת y בבלוק השני ל-0. עכשיו Hello World! למעלה ו-ACEBOTT למטה. הסבירו לעצמכם למה זה עבד.
אתגר — מסך שמתחלף. גררו בלוק forever מסביב לשני הבלוקים, ובתוכו הוסיפו wait [1] seconds אחרי כל אחד מהם, וכן זוג בלוקים נוסף עם טקסט אחר. בנו מסך שמתחלף בין שתי הודעות כל שנייה. רמז: כדי לנקות שורה ישנה, כתבו עליה רווחים.


