מה נלמד כאן
- משפט
ifבפייתון - אופרטורים לוגיים
- שתי שיטות שליטה: רגעית ומתחלפת
- ריטוט מגעים
שתי דרכים לכבות אור

- פעמון דלת — לוחצים, מצלצל. משחררים, נפסק.
- מתג אור — לוחצים, נדלק. לוחצים שוב, נכבה.
נבנה את שתיהן.
הידע שצריך
1. if בפייתון
if condition:
# רץ אם נכון
elif other:
# אם התנאי השני נכון
else:
# אם אף אחד
שימו לב לשלושה הבדלים מ-C: אין סוגריים סביב התנאי, יש נקודתיים בסוף, וההזחה היא שקובעת מה שייך לבלוק. אין סוגריים מסולסלים בכלל.
ו-
elifהוא קיצור שלelse if— מילה אחת.
2. תנאים
| האופרטור | המשמעות |
|---|---|
== != |
שווה, לא שווה |
> < >= <= |
השוואות גודל |
and or not |
לוגיים |
בפייתון כותבים
and,or,notבמילים — לא&&,||,!. קריא בהרבה.
⚠️
=מול==: סימן אחד משים ערך, שניים משווים. בפייתון זו שגיאת תחביר ולא באג שקט — יתרון על C.
3. שתי שיטות השליטה
רגעית — "לוחצים, קורה. משחררים, נפסק". מתאים לפעמון.
מתחלפת — "לחיצה מדליקה, לחיצה נוספת מכבה". מתאים למנורה.
4. ריטוט מגעים
לחצן הוא רכיב מכני. כשהמגעים נפגשים הם מקפצים עשרות פעמים במילי-שניות. העין לא רואה, המעבד כן.
לחיצה אחת נקראת כעשר. במצב רגעי לא מפריע. במצב מתחלף זה הורס הכול.
הפתרון:
if button.value() == 0:
time.sleep(0.2) # ממתינים שהריטוט ייגמר
while button.value() == 0: # ממתינים לשחרור
pass
# רק עכשיו מבצעים
passהיא פקודה שלא עושה כלום. בפייתון לא ניתן להשאיר בלוק ריק —passממלאת את המקום. ב-C זה היה;בודד.
ניסוי 1 — שליטה רגעית
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 1 |
| נורית LED | 1 |
| לחצן | 1 |
| נגד 220Ω | 1 |
| נגד 10kΩ | 1 |
התרשים החשמלי

החיבור

הקוד
from machine import Pin
import time
LED_PIN = 5
BUTTON_PIN = 16
button = Pin(BUTTON_PIN, Pin.IN)
led = Pin(LED_PIN, Pin.OUT)
while True:
button_state = button.value()
if button_state == 0: # לחוץ (Pull-Up!)
led.value(1)
else:
led.value(0)
אין כאן טיפול בריטוט — ובכוונה. במצב רגעי, קריאות נוספות רק מדליקות נורית שכבר דולקת.
ניסוי 2 — שליטה מתחלפת
from machine import Pin
import time
led = Pin(5, Pin.OUT)
button = Pin(16, Pin.IN)
light_state = False # המצב — כאן נכנס הזיכרון
while True:
if button.value() == 0:
time.sleep(0.2) # ריטוט
while button.value() == 0: # המתנה לשחרור
pass
light_state = not light_state # היפוך המצב
led.value(1 if light_state else 0)
שתי נקודות מפתח:
light_state — הרגע הוספתם לתוכנית זיכרון. עד עכשיו היא הגיבה רק להווה; עכשיו היא זוכרת.
not light_state — הופך True ל-False ולהפך. בפייתון כותבים not, לא !.
ו-1 if light_state else 0 הוא ביטוי תנאי — שורה אחת שמחזירה ערך לפי תנאי. אלגנטי, ואין לו מקבילה פשוטה ב-C.

נסו בעצמכם
- הסירו את ה-
sleepואת ה-whileמניסוי 2 והריצו. זה התרגיל החשוב — תראו את הריטוט. - שנו את ההשהיה ל-0.05 ואז 0.02. איפה זה נשבר?
- הוסיפו לחצן שני: אחד מדליק, אחד מכבה.
- שלבו עם שיעור 18: לחיצה מחליפה בין אור רץ לכיבוי.
- נסו לכתוב
if light_state = True. מה פייתון אומרת?


