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

עד עכשיו הפלט שלכם היה נוריות וספרות. עכשיו — טקסט אמיתי.
הידע שצריך
1. מסך LCD1602
השם מסביר את עצמו: 16 תווים ברוחב, 2 שורות. כל תו מורכב ממטריצת נקודות של 5×8.

איך זה עובד: הבקר שולח למסך את נתוני מטריצת הנקודות, והמסך מדליק את הפיקסלים המתאימים. בדיוק אותו עיקרון של תצוגת המקטעים — רק ברזולוציה גבוהה בהרבה.
לדוגמה, כדי להציג את האות A במטריצה של 5×7, מסמנים 1 בכל מקום שצריך להידלק ו-0 בכל מקום שכבוי. המסך יודע לעשות את זה לבד לכל התווים הסטנדרטיים.
מה אפשר להציג: אותיות אנגליות (A-Z, a-z), ספרות (0-9), סימנים (: ; ? ! + - * = @ # % ^ & ( )) ותווים מותאמים אישית.
⚠️ בגב המסך יש פוטנציומטר קטן. אם המסך נדלק אבל לא רואים טקסט — סובבו אותו. זה כיוונון הניגודיות, וזו הבעיה הראשונה של כל מי שמחבר את המסך בפעם הראשונה.
2. תקשורת I2C — שני חוטים לכל הרכיבים
מסך LCD רגיל דורש הרבה פינים. הפתרון הוא I2C.

I2C הוא פרוטוקול תקשורת טורית שמחבר מכשירים רבים על שני חוטים בלבד:
| הקו | השם | התפקיד |
|---|---|---|
| SDA | Serial Data | קו הנתונים — דו-כיווני |
| SCL | Serial Clock | קו השעון — נוצר על ידי הבקר |
ואיך כמה מכשירים חיים על אותם שני חוטים? לכל מכשיר יש כתובת ייחודית, צרובה בשבב. הבקר פונה בכתובת, והמכשיר הרלוונטי עונה.
חמשת שלבי התקשורת
| השלב | מה קורה |
|---|---|
| 1. התחלה | הבקר מוריד את SDA בזמן ש-SCL גבוה — "מתחילים" |
| 2. כתובת | הבקר שולח כתובת 7 ביט + ביט קריאה/כתיבה |
| 3. אישור | המכשיר עונה ACK ("קיבלתי") או NACK |
| 4. נתונים | העברת בייטים, כל אחד עם ACK |
| 5. סיום | הבקר מרים את SDA בזמן ש-SCL גבוה — "סיימנו" |
זוכרים מפרק 1? ל-ESP32 יש שני בקרי I2C, וכל אחד מהם יכול לנהל עד כ-112 מכשירים. עכשיו ברור למה זה כל כך שימושי.
כתובת המסך שלנו היא 0x27. אם המסך לא עובד, ייתכן שהכתובת שלו היא 0x3F — זו הווריאציה הנפוצה השנייה.
⚠️ דרוש ספריית LiquidCrystal_I2C מהשיעור ההתקנה.
הניסוי
המטרה: להציג "ACEBOTT" בשורה הראשונה ו-"Hello World!" בשנייה.
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 1 |
| מסך LCD1602 | 1 |
התרשים החשמלי

החיבור

ארבעה חוטים בלבד: VCC, GND, SDA ו-SCL.
הקוד
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// כתובת I2C, מספר עמודות, מספר שורות
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // אתחול
lcd.backlight(); // הדלקת התאורה האחורית
lcd.setCursor(0, 0); // עמודה 0, שורה 0
lcd.print(" ACEBOTT ");
lcd.setCursor(0, 1); // עמודה 0, שורה 1
lcd.print(" Hello World! ");
}
void loop() {
}
שימו לב ש-loop() ריקה. הטקסט נכתב פעם אחת ב-setup ונשאר על המסך — המסך זוכר את מה שהוצג בו ולא צריך לרענן אותו כל הזמן.
זה הבדל מהותי מתצוגת ארבע הספרות, שדרשה סריקה מתמדת.
מה אמור לקרות

הפקודות שלמדנו
| הפקודה | מה היא עושה |
|---|---|
LiquidCrystal_I2C lcd(addr, cols, rows) |
יוצרת את אובייקט המסך |
lcd.init() |
מאתחלת |
lcd.backlight() |
מדליקה תאורה אחורית |
lcd.setCursor(col, row) |
ממקמת את הסמן (שניהם מתחילים מ-0) |
lcd.print() |
מדפיסה במיקום הסמן |
נסו בעצמכם
- אם המסך ריק — סובבו את הפוטנציומטר בגב. חזר?
- אם עדיין כלום — שנו את הכתובת ל-
0x3F. - הדפיסו את השם שלכם. מה קורה אם הטקסט ארוך מ-16 תווים?
- שלבו עם שיעור 12: הציגו טמפרטורה ולחות על המסך. זה כבר מוצר אמיתי.
- הוסיפו
lcd.clear()ו-delayבתוך ה-loopוהציגו טקסט מתחלף.


