class Pin -- التحكم في دبابيس الإدخال/الإخراج¶
يُستخدم كائن الدبوس للتحكم في دبابيس الإدخال/الإخراج (المعروفة أيضاً باسم GPIO - الإدخال/الإخراج للأغراض العامة). ترتبط كائنات الدبوس عادةً بدبوس فعلي يمكنه توليد جهد خرج وقراءة جهود الدخل. تحتوي الفئة Pin على دوال لضبط وضع الدبوس (IN، OUT، إلخ) ودوال للحصول على المستوى المنطقي الرقمي وضبطه. للتحكم التماثلي في الدبوس، راجع الفئة ADC.
يُنشأ كائن الدبوس باستخدام معرّف يحدّد دبوس إدخال/إخراج معيناً بشكل لا لبس فيه. الأشكال المسموح بها للمعرّف والدبوس الفعلي الذي يقابله المعرّف خاصة بالمنفذ. الاحتمالات الممكنة للمعرّف هي عدد صحيح، أو سلسلة نصية، أو صف يضم المنفذ ورقم الدبوس.
نموذج الاستخدام:
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))
البانيات (Constructors)¶
- 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 (معرّف دبوس داخلي)، وstr (اسم دبوس)، وtuple (زوج من [port, pin]).modeيحدد وضع الدبوس، الذي يمكن أن يكون أحد الأوضاع التالية:Pin.IN- الدبوس مهيأ للإدخال. إذا نُظر إليه كخرج فإن الدبوس يكون في حالة معاوقة عالية.Pin.OUT- الدبوس مهيأ للخرج (العادي).Pin.OPEN_DRAIN- الدبوس مهيأ لخرج المصرف المفتوح. يعمل خرج المصرف المفتوح بالطريقة التالية: إذا ضُبطت قيمة الخرج على 0 يكون الدبوس نشطاً عند مستوى منخفض؛ وإذا كانت قيمة الخرج 1 يكون الدبوس في حالة معاوقة عالية. لا تطبّق جميع المنافذ هذا الوضع، وقد تطبّقه بعضها فقط على دبابيس معينة.Pin.ALT- الدبوس مهيأ لأداء وظيفة بديلة، وهي خاصة بالمنفذ. بالنسبة لدبوس مهيأ بهذه الطريقة، لا تنطبق أي دوال أخرى من Pin (باستثناءPin.init()) (سيؤدي استدعاؤها إلى نتيجة غير محددة أو خاصة بالعتاد). لا تطبّق جميع المنافذ هذا الوضع.Pin.ALT_OPEN_DRAIN- نفسPin.ALTلكن الدبوس مهيأ كمصرف مفتوح. لا تطبّق جميع المنافذ هذا الوضع.Pin.ANALOG- الدبوس مهيأ للإدخال التماثلي، راجع الفئةADC.
pullيحدد ما إذا كان للدبوس مقاومة سحب (ضعيفة) متصلة، ويمكن أن يكون أحد القيم التالية:None- لا توجد مقاومة سحب للأعلى أو للأسفل.Pin.PULL_UP- مقاومة السحب للأعلى مفعّلة.Pin.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إذا كان صحيحاً تُستخدم مقاطعة عتادية. يقلل هذا من التأخير بين تغيّر الدبوس واستدعاء المعالج. قد لا تخصص معالجات المقاطعة العتادية ذاكرة؛ راجع كتابة معالجات المقاطعات. لا تدعم جميع المنافذ هذه الوسيطة.
تُرجع هذه الدالة كائن دالة رد النداء.
الدوال التالية امتدادات لواجهة Pin الأساسية. وهي مجمّعة حسب توفرها في المنافذ.
الدوال المتوفرة في جميع منافذ OpenMV¶
mimxrt + alif فقط¶
STM32 فقط¶
الثوابت¶
تُستخدم الثوابت أدناه لتهيئة كائنات
Pinعبر الباني وinit()وirq(). وهي مجمّعة حسب توفرها في المنافذ.الثوابت المتوفرة في جميع منافذ OpenMV¶
STM32 فقط¶
- ALT: int¶
وضع الدبوس: وظيفة بديلة (push-pull). استخدمه مع
alt=لاختيار الوظيفة الطرفية التي يُوجّه إليها الدبوس. اسم بديل لـAF_PP.
- ANALOG: int¶
وضع الدبوس: إدخال تماثلي -- يُفصل مخزن الإدخال/الإخراج الرقمي المؤقت بحيث يمكن دفع الدبوس بواسطة قناة
ADC.
- AF_OD: int¶
وضع الوظيفة البديلة بمصرف مفتوح (نفس قيمة
ALT_OPEN_DRAIN).
- OUT_OD: int¶
وضع خرج المصرف المفتوح (نفس قيمة
OPEN_DRAIN).
mimxrt فقط¶
- PULL_HOLD: int¶
تفعيل وظيفة حافظ الناقل / التثبيت للوسادة -- يثبّت الدبوس مستواه المنطقي الحالي بدلاً من أن يكون عائماً.