الصنف Pin -- التحكم في دبابيس الإدخال/الإخراج¶
يمثل كائن Pin دبوس GPIO واحدًا على STM32. وهو يوفر طرقًا لتهيئة وضع الدبوس (إدخال، إخراج، وظيفة بديلة، تناظري) ومقاومات السحب، ولقراءة مستواه الرقمي أو قيادته. للاطلاع على أخذ العينات التناظرية راجع pyb.ADC؛ ولتعداد الوظائف البديلة راجع PinAF.
جميع دبابيس الترويسة معرّفة مسبقًا على هيئة pyb.Pin.board.<name>. تكشف معظم كاميرات STM32 OpenMV Cam عن دبابيس ترويسة الإدخال/الإخراج P0 ... P9؛ بينما تكشف OpenMV Cam N6 عن دبابيس إضافية حتى P18
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
يمكن أيضًا الوصول إلى منفذ/دبوس STM32 الأساسي مباشرةً عبر pyb.Pin.cpu.<name>، المسمى بحرف المنفذ متبوعًا برقم الدبوس (على سبيل المثال pyb.Pin.cpu.A0). إن ربط كل دبوس ترويسة في OpenMV بدبوس CPU ثابت ومحدد من قبل اللوحة.
يمكن أيضًا اختيار الدبابيس بالاسم النصي:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
يمكن إضافة أسماء معرّفة من المستخدم باستخدام Pin.dict()
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
والاستعلام عنها لاحقًا:
pin = pyb.Pin("LeftMotorDir")
بدلاً من ذلك، يمكن تثبيت دالة ربط مخصصة باستخدام Pin.mapper()
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
بحيث يمرر استدعاء pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) القيمة "LeftMotorDir" مباشرةً إلى دالة الربط.
يحدد الترتيب التالي كيفية ربط اسم بدبوس فعلي:
تمرير كائن
Pinمباشرةً.تُرجع دالة الربط التي يوفرها المستخدم دبوسًا.
يحتوي القاموس الذي يوفره المستخدم على مفتاح مطابق.
يطابق النص اسم دبوس لوحة (
P0،P1، ...).يطابق النص اسم منفذ/دبوس CPU (
A0،B7، ...).
استدعِ pyb.Pin.debug(True) لطباعة معلومات تشخيصية حول كيفية ربط كل كائن بدبوس.
المُنشئات¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
إنشاء كائن Pin جديد مرتبط بالمعرف
idالمحدد. إذا قُدمت وسائط إضافية فإنها تُمرر إلىPin.init()لتهيئة الدبوس.طرق الصنف¶
الطرق¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
تهيئة الدبوس:
يمكن أن يكون mode أحد التالي:
Pin.IN- تهيئة الدبوس للإدخال؛Pin.OUT_PP- تهيئة الدبوس للإخراج، مع تحكم دفع-سحب (push-pull)؛Pin.OUT_OD- تهيئة الدبوس للإخراج، مع تحكم مفتوح الصرف (open-drain)؛Pin.ALT- تهيئة الدبوس للوظيفة البديلة، إدخالاً أو إخراجًا؛Pin.AF_PP- تهيئة الدبوس للوظيفة البديلة، دفع-سحب؛Pin.AF_OD- تهيئة الدبوس للوظيفة البديلة، مفتوح الصرف؛Pin.ANALOG- تهيئة الدبوس للوضع التناظري.
يمكن أن يكون pull أحد التالي:
Pin.PULL_NONE- لا مقاومات سحب للأعلى أو للأسفل؛Pin.PULL_UP- تمكين مقاومة السحب للأعلى؛Pin.PULL_DOWN- تمكين مقاومة السحب للأسفل.
عندما يكون لدبوس وضع السحب
Pin.PULL_UPأوPin.PULL_DOWNممكّنًا، يُسحب ذلك الدبوس إلى 3V3 أو GND على التوالي عبر مقاومة داخلية (عادةً عشرات الكيلو أوم -- راجع الخصائص الكهربائية في ورقة بيانات STM32 لكاميرا OpenMV Cam المستخدمة).إذا لم تكن value مساوية لـ None فإنها ستضبط قيمة خرج المنفذ قبل تمكين الدبوس.
يمكن استخدام alt عندما يكون الوضع
Pin.ALTأوPin.AF_PPأوPin.AF_ODلتعيين فهرس أو اسم إحدى الوظائف البديلة المرتبطة بدبوس. كان اسم هذه الوسيطة سابقًاafوالذي لا يزال يمكن استخدامه عند الحاجة.
- value(value: Any | None = None) int | None¶
الحصول على المستوى المنطقي الرقمي للدبوس أو ضبطه:
بدون وسيطة، يُرجع 0 أو 1 حسب المستوى المنطقي للدبوس.
عند تقديم
value، يُضبط المستوى المنطقي للدبوس. يمكن أن تكونvalueأي شيء قابل للتحويل إلى قيمة منطقية. إذا تحولت إلىTrueيُضبط الدبوس على المستوى العالي، وإلا يُضبط على المستوى المنخفض.
- af() int¶
إرجاع الوظيفة البديلة المُهيأة حاليًا للدبوس. سيطابق العدد الصحيح المُرجع أحد الثوابت المسموح بها لوسيطة af في دالة init.
الثوابت¶