class Pin – בקרת פיני קלט/פלט¶
אובייקט פין משמש לבקרת פיני קלט/פלט (הידועים גם בשם GPIO - general-purpose input/output). אובייקטי פין משויכים בדרך כלל לפין פיזי שיכול להניע מתח פלט ולקרוא מתחי קלט. למחלקה Pin יש מתודות להגדרת מצב הפין (IN, OUT וכו«) ומתודות לקבלה ולהגדרה של רמת הלוגיקה הדיגיטלית. לבקרה אנלוגית של פין, ראו את המחלקה ADC.
אובייקט פין נבנה באמצעות מזהה שמציין באופן חד-משמעי פין קלט/פלט מסוים. הצורות המותרות של המזהה והפין הפיזי שאליו הוא ממופה תלויות בפורט. אפשרויות אפשריות למזהה הן מספר שלם, מחרוזת, או tuple עם מספר פורט ופין.
מודל שימוש:
from machine import Pin
# create an output pin on header pin P0
p0 = Pin("P0", Pin.OUT)
# set the value low then high
p0.value(0)
p0.value(1)
# create an input pin on header pin P2, with a pull-up resistor
p2 = Pin("P2", Pin.IN, Pin.PULL_UP)
# read and print the pin value
print(p2.value())
# reconfigure P0 in input mode with a pull-down resistor
p0.init(p0.IN, p0.PULL_DOWN)
# install an IRQ callback
p0.irq(lambda p: print(p))
בנאים¶
- class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)¶
גישה להתקן ההיקפי של הפין (פין GPIO) המשויך ל-
idהנתון. אם ניתנים ארגומנטים נוספים בבנאי, הם משמשים לאתחול הפין. הגדרות שלא צוינו יישארו במצבן הקודם.הארגומנטים הם:
idהוא חובה ויכול להיות אובייקט שרירותי. בין סוגי הערכים האפשריים: int (מזהה Pin פנימי), str (שם Pin), ו-tuple (זוג [port, pin]).modeמציין את מצב הפין, שיכול להיות אחד מהבאים:Pin.IN- הפין מוגדר לקלט. אם נצפה כפלט, הפין נמצא במצב עכבה גבוהה.Pin.OUT- הפין מוגדר לפלט (רגיל).Pin.OPEN_DRAIN- הפין מוגדר לפלט open-drain. פלט open-drain פועל באופן הבא: אם ערך הפלט מוגדר ל-0 הפין פעיל ברמה נמוכה; אם ערך הפלט הוא 1 הפין נמצא במצב עכבה גבוהה. לא כל הפורטים מממשים מצב זה, וחלקם עשויים לממש אותו רק בפינים מסוימים.Pin.ALT- הפין מוגדר לבצע פונקציה חלופית, שתלויה בפורט. עבור פין המוגדר בדרך זו, כל מתודה אחרת של Pin (למעטPin.init()) אינה ישימה (קריאה להן תוביל לתוצאה לא מוגדרת, או תלוית-חומרה). לא כל הפורטים מממשים מצב זה.Pin.ALT_OPEN_DRAIN- זהה ל-Pin.ALT, אך הפין מוגדר כ-open-drain. לא כל הפורטים מממשים מצב זה.Pin.ANALOG- הפין מוגדר לקלט אנלוגי, ראו את המחלקהADC.
pullמציין אם לפין מחובר נגד pull (חלש), ויכול להיות אחד מהבאים:None- ללא נגד pull up או pull down.Pin.PULL_UP- נגד pull up מאופשר.Pin.PULL_DOWN- נגד pull down מאופשר.
valueתקף רק עבור המצבים Pin.OUT ו-Pin.OPEN_DRAIN ומציין את ערך פלט הפין ההתחלתי אם ניתן, אחרת מצב ההתקן ההיקפי של הפין נשאר ללא שינוי.driveמציין את עוצמת הפלט של הפין ויכול להיות אחד מהבאים:Pin.DRIVE_0,Pin.DRIVE_1וכו«, בסדר עולה של עוצמת הנעה. יכולות הנעת הזרם בפועל תלויות בפורט. לא כל הפורטים מממשים ארגומנט זה.altמציין פונקציה חלופית עבור הפין והערכים שהוא יכול לקבל תלויים בפורט. ארגומנט זה תקף רק עבור המצביםPin.ALTו-Pin.ALT_OPEN_DRAIN. ניתן להשתמש בו כאשר פין תומך ביותר מפונקציה חלופית אחת. אם נתמכת רק פונקציה חלופית אחת לפין, ארגומנט זה אינו נדרש. לא כל הפורטים מממשים ארגומנט זה.
כפי שצוין לעיל, המחלקה Pin מאפשרת להגדיר פונקציה חלופית לפין מסוים, אך אינה מציינת פעולות נוספות על פין כזה. פינים המוגדרים במצב פונקציה חלופית בדרך כלל אינם משמשים כ-GPIO אלא מונעים על ידי התקנים היקפיים אחרים בחומרה. הפעולה היחידה הנתמכת על פין כזה היא אתחול מחדש, על ידי קריאה לבנאי או למתודה
Pin.init(). אם פין המוגדר במצב פונקציה חלופית מאותחל מחדש עםPin.IN,Pin.OUT, אוPin.OPEN_DRAIN, הפונקציה החלופית תוסר מהפין.מתודות¶
- init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None¶
אתחול מחדש של הפין באמצעות הפרמטרים הנתונים. רק הארגומנטים שצוינו ייקבעו. שאר מצב ההתקן ההיקפי של הפין יישאר ללא שינוי. ראו את תיעוד הבנאי לפרטים על הארגומנטים.
מחזיר
None.
- value(x: Any = None, /) int | None¶
מתודה זו מאפשרת להגדיר ולקבל את ערך הפין, בהתאם לכך אם הארגומנט
xסופק או לא.אם הארגומנט מושמט אז מתודה זו מקבלת את רמת הלוגיקה הדיגיטלית של הפין, ומחזירה 0 או 1 בהתאם לאותות מתח נמוך וגבוה. התנהגות מתודה זו תלויה במצב הפין:
Pin.IN- המתודה מחזירה את ערך הקלט בפועל הנוכחי על הפין.Pin.OUT- ההתנהגות וערך ההחזרה של המתודה אינם מוגדרים.Pin.OPEN_DRAIN- אם הפין במצב »0« אז ההתנהגות וערך ההחזרה של המתודה אינם מוגדרים. אחרת, אם הפין במצב »1«, המתודה מחזירה את ערך הקלט בפועל הנוכחי על הפין.
אם הארגומנט סופק אז מתודה זו מגדירה את רמת הלוגיקה הדיגיטלית של הפין. הארגומנט
xיכול להיות כל דבר שמומר לערך בוליאני. אם הוא מומר ל-True, הפין מוגדר למצב »1«, אחרת הוא מוגדר למצב »0«. התנהגות מתודה זו תלויה במצב הפין:Pin.IN- הערך נשמר בחוצץ הפלט של הפין. מצב הפין אינו משתנה, הוא נשאר במצב עכבה גבוהה. הערך השמור יהפוך לפעיל על הפין ברגע שיוחלף למצבPin.OUTאוPin.OPEN_DRAIN.Pin.OUT- חוצץ הפלט מוגדר לערך הנתון מיד.Pin.OPEN_DRAIN- אם הערך הוא »0« הפין מוגדר למצב מתח נמוך. אחרת הפין מוגדר למצב עכבה גבוהה.
בעת הגדרת הערך מתודה זו מחזירה
None.
- __call__(x: Any = None, /) int | None¶
אובייקטי פין ניתנים לקריאה. מתודת הקריאה מספקת קיצור (מהיר) להגדרה ולקבלה של ערך הפין. היא שקולה ל-Pin.value([x]). ראו
Pin.value()לפרטים נוספים.
- irq(handler: Callable[[Pin], None] | None = None, trigger: int = Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority: int = 1, wake: int | None = None, hard: bool = False) None¶
הגדרת מטפל פסיקה שייקרא כאשר מקור ההפעלה של הפין פעיל. אם מצב הפין הוא
Pin.INאז מקור ההפעלה הוא הערך החיצוני על הפין. אם מצב הפין הואPin.OUTאז מקור ההפעלה הוא חוצץ הפלט של הפין. אחרת, אם מצב הפין הואPin.OPEN_DRAINאז מקור ההפעלה הוא חוצץ הפלט עבור מצב »0« והערך החיצוני של הפין עבור מצב »1«.הארגומנטים הם:
handlerהיא פונקציה אופציונלית שתיקרא כאשר הפסיקה מופעלת. המטפל חייב לקבל ארגומנט אחד בדיוק שהוא מופע ה-Pin.triggerמגדיר את האירוע שיכול לייצר פסיקה. הערכים האפשריים הם:Pin.IRQ_FALLINGפסיקה על קצה יורד.Pin.IRQ_RISINGפסיקה על קצה עולה.
ערכים אלה ניתנים לשילוב באמצעות OR כדי להפעיל על אירועים מרובים.
priorityקובע את רמת העדיפות של הפסיקה. הערכים שהוא יכול לקבל תלויים בפורט, אך ערכים גבוהים יותר מייצגים תמיד עדיפויות גבוהות יותר.wakeבוחר את מצב הצריכה שבו פסיקה זו יכולה להעיר את המערכת. לא נתמך באף פורט של OpenMV; השאירו בברירת המחדל.hardאם true נעשה שימוש בפסיקת חומרה. הדבר מקטין את ההשהיה בין שינוי הפין לבין קריאת המטפל. מטפלי פסיקת חומרה אינם רשאים להקצות זיכרון; ראו כתיבת מטפלי פסיקה. לא כל הפורטים תומכים בארגומנט זה.
מתודה זו מחזירה אובייקט callback.
המתודות הבאות הן הרחבות ל-API הליבה של Pin. הן מקובצות לפי זמינות בפורטים.
מתודות הזמינות בכל הפורטים של OpenMV¶
mimxrt + alif בלבד¶
STM32 בלבד¶
קבועים¶
הקבועים שלהלן משמשים להגדרת אובייקטי
Pinבאמצעות הבנאי,init()ו-irq(). הם מקובצים לפי זמינות בפורטים.קבועים הזמינים בכל הפורטים של OpenMV¶
STM32 בלבד¶
- ALT: int¶
מצב פין: פונקציה חלופית (push-pull). השתמשו עם
alt=כדי לבחור לאיזו פונקציית התקן היקפי הפין מנותב. כינוי שלAF_PP.
- ANALOG: int¶
מצב פין: קלט אנלוגי – חוצץ הקלט/פלט הדיגיטלי מנותק כך שניתן להניע את הפין על ידי ערוץ
ADC.
- AF_OD: int¶
מצב פונקציה חלופית open-drain (אותו ערך כמו
ALT_OPEN_DRAIN).
- OUT_OD: int¶
מצב פלט open-drain (אותו ערך כמו
OPEN_DRAIN).
mimxrt בלבד¶
- PULL_HOLD: int¶
מאפשר את פונקציית ה-bus-keeper / hold של הפד – הפין נועל את רמת הלוגיקה הנוכחית שלו במקום לצוף.