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

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

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

אזעקת קרבה — טיפול בערך שגיאה

מה בשיעור?

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

מה נלמד כאן

  • אזעקת קרבה
  • לשלב מדידה, תצוגה והתרעה

חיישן חניה

מערכת ראדאר

בקרת כניסה, עזרה בחניה, ניטור ביטחוני.


הידע שצריך

איך זה עובד

עקרון הפעולה

מודדים  →  מציגים  →  משווים לסף  →  מתריעים

מתחת ל-15 ס"מ: נורית, זמזם, ו-WARNING על המסך.

למה זה שיעור מסכם טוב

תסתכלו מה נדרש: אולטרסוני (13), LCD (17), זמזם (8), נורית (1), תנאים (19). חמישה שיעורים בפרויקט אחד — וזו מערכת שנמכרת בחנויות.


הניסוי

המטרה: מרחק על המסך, ומתחת ל-15 ס"מ — אזעקה.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
מסך LCD1602 1
חיישן אולטרסוני 1
זמזם אקטיבי 1
נורית LED 1
נגד 220Ω 1

התרשים החשמלי

התרשים החשמלי

החיבור

חיבור הרכיבים


הקוד

from machine import Pin, time_pulse_us
import time
from libs.Acebott import i2c
from libs.ACB_LCD1602 import ACB_LCD1602

lcd = ACB_LCD1602(i2c)
lcd.set_backlight(True)

trig = Pin(5, Pin.OUT)
echo = Pin(16, Pin.IN)
buzzer = Pin(17, Pin.OUT)
led = Pin(18, Pin.OUT)

def read_distance():
    trig.value(0); time.sleep_us(2)
    trig.value(1); time.sleep_us(10)
    trig.value(0)
    duration = time_pulse_us(echo, 1, 26000)
    if duration < 0:
        return -1                       # אין הד
    return (duration * 0.034) / 2

while True:
    dist = read_distance()

    if dist > 0:
        lcd.display_text_at_position(0, 0, "Dist:{:.1f}cm   ".format(dist))

        if dist < 15:
            led.value(1); buzzer.value(1)
            lcd.display_text_at_position(0, 1, "** WARNING **  ")
        else:
            led.value(0); buzzer.value(0)
            lcd.display_text_at_position(0, 1, "               ")

    time.sleep(0.2)

שתי נקודות חשובות:

1. if duration < 0: return -1time_pulse_us מחזירה ערך שלילי כשפג פסק הזמן. מחזירים ‎-1 כערך שגיאה מוסכם, ו-if dist > 0 בלולאה מסננת אותו.

בלי הבדיקה הזו, המערכת הייתה מצפצפת דווקא כשאין אף אחד.

2. "{:.1f}".format(dist) — מעצב את המספר לספרה אחת אחרי הנקודה. בלעדיו תראו 14.28999999 על המסך.

מה אמור לקרות

המערכת מתריעה


נסו בעצמכם

  • הפכו את הזמזם למצפצף מהר יותר ככל שקרובים — חיישן חניה אמיתי.
  • הוסיפו שלוש רמות עם נורית RGB.
  • הוסיפו מונה של הפעלות האזעקה.
  • הסירו את if dist > 0 וכוונו לחלל ריק. מה קורה?
  • שלבו עם שיעור 11: סרוו שמסובב את החיישן — סריקת ראדאר.

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

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

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