דלגו לתוכן המרכזי
KitLab
שיעור קודם
מסך LCD1602 — לכתוב מילים על מסך אמיתי· 20 / 41
מסך LCD1602 — לכתוב מילים על מסך אמיתי
🎬

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

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

מסך LCD1602 — לכתוב מילים על מסך אמיתי

מה בשיעור?

  • להסביר איך מסך מרכיב אות מתוך נקודות
  • לזהות את ארבע הרגליים של מסך I2C ומה כל אחת עושה
  • להבין למה שני חוטים מספיקים לתקשורת I2C
  • לכוון את הבורג בגב המסך כדי שהטקסט ייראה
  • להשתמש בבלוק LCD x y show string ולמקם טקסט במדויק
  • לכתוב שתי שורות שונות זו מתחת לזו

מה נלמד כאן

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

כל מכשיר רוצה לדבר איתכם

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

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

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

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


הידע שצריך

1. מהו מסך LCD1602

מסך LCD1602 כחול מציג ACEBOTT בשורה העליונה ו-acebott.com בשורה התחתונה

השם מסביר את עצמו: 16 תווים ברוחב, 2 שורות בגובה. סך הכול 32 תווים על המסך בבת אחת — פחות מהודעת וואטסאפ קצרה, ובדיוק מספיק בשביל "Temp: 24C" או "Door Open".

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

⚠️ עברית לא תעבוד. המסך הזה לא מכיר אותיות עבריות — הן פשוט אינן קיימות בתוכו. כתבו באנגלית או בספרות.

2. איך נוצרת אות על המסך

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

טבלת נקודות 5 על 7 שמרכיבה את האות A — אפסים ואחדים משמאל, ריבועים מלאים וריקים מימין

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

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

3. הבורג הכחול שבגב

גב מסך LCD1602 — לוח I2C קטן עם בורג כוונון כחול, מסומן בחץ אדום

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

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

זכרו את זה: מסך ריק זה לרוב בורג, לא באג.

4. תקשורת I2C

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

תרשים אפיק I2C — שלושה התקנים מחוברים במקביל לאותם שני קווים SDA ו-SCL

שני הקווים הם:

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

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

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


החיבור

סכמת חיבור LCD1602 — SCL, SDA, VCC ל-5V ו-GND לאדמה

ארבעה חוטים, וזהו:

רגל במסך לאן מחברים
SCL חיבור SCL בלוח
SDA חיבור SDA בלוח
VCC 5V
GND GND

בלוח ה-ESP32 של הערכה יש חיבורים שכתוב עליהם ממש SDA ו-SCL, ליד הפינה השמאלית העליונה. אין כאן ניחושים — מחברים שם, ובלוח הניסוי אין צורך בכלל.

תרשים חיווט — מסך LCD1602 מחובר בארבעה חוטים ישירות ללוח ESP32

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


הבלוקים

תוכנית הבלוקים — start the program ואחריו שני בלוקי LCD show string

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

הבלוק LCD x y show string עם הטקסט Hi

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.

ההסבר המלא על צריבה נמצא בשיעור ההתקנה.

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

תצלום התוצאה — מסך LCD1602 מחובר ללוח ESP32 ומציג ACEBOTT ו-Hello World!

לא רואים כלום? עברו על שלוש הבדיקות האלה, לפי הסדר:

  1. הבורג הכחול בגב — סובבו אותו לאט לשני הכיוונים. ברוב המקרים זה הפתרון.
  2. החוטים SDA ו-SCL — קל מאוד להחליף ביניהם. החליפו ונסו שוב.
  3. חיבור החשמל — ודאו ש-VCC נמצא ב-5V.

מה קרה כאן

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

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


תרגילים

  1. כתבו את השם שלכם. שנו את הטקסט בתיבה של הבלוק הראשון מ-ACEBOTT לשם שלכם באנגלית, ואת השני למשהו שאתם רוצים להגיד. צרבו וראו.

  2. הזיזו את הטקסט למרכז. שנו את x בבלוק הראשון מ-0 ל-5. שימו לב שהטקסט זז ימינה. מה קורה אם תכתבו x=14 עם מילה ארוכה? נסו וראו מה קורה לאותיות שנגמר להן המקום.

  3. החליפו שורות. שנו את y בבלוק הראשון ל-1 ואת y בבלוק השני ל-0. עכשיו Hello World! למעלה ו-ACEBOTT למטה. הסבירו לעצמכם למה זה עבד.

  4. אתגר — מסך שמתחלף. גררו בלוק forever מסביב לשני הבלוקים, ובתוכו הוסיפו wait [1] seconds אחרי כל אחד מהם, וכן זוג בלוקים נוסף עם טקסט אחר. בנו מסך שמתחלף בין שתי הודעות כל שנייה. רמז: כדי לנקות שורה ישנה, כתבו עליה רווחים.

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

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

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