class Pin -- การควบคุมพิน I/O¶
ออบเจกต์ Pin แทนพิน GPIO หนึ่งพินบน STM32 โดยให้เมธอดในการกำหนดค่าโหมดของพิน (อินพุต เอาต์พุต ฟังก์ชันสำรอง อนาล็อก) และตัวต้านทานดึง รวมถึงอ่านหรือขับระดับดิจิทัลของพิน สำหรับการสุ่มตัวอย่างอนาล็อกดูที่ pyb.ADC สำหรับการระบุฟังก์ชันสำรองดูที่ PinAF
พินส่วนหัวทั้งหมดถูกกำหนดไว้ล่วงหน้าเป็น pyb.Pin.board.<name> OpenMV Cam STM32 ส่วนใหญ่เปิดเผยพินส่วนหัว I/O 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" ไปยัง mapper โดยตรง
ลำดับต่อไปนี้กำหนดวิธีที่ชื่อถูกแมปไปยังพินฟิสิคัล:
ออบเจกต์
Pinถูกส่งผ่านโดยตรงฟังก์ชัน mapper ที่ผู้ใช้จัดเตรียมคืนค่าพิน
พจนานุกรมที่ผู้ใช้จัดเตรียมมีคีย์ที่ตรงกัน
สตริงตรงกับชื่อพินบอร์ด (
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- กำหนดค่าพินสำหรับฟังก์ชันสำรอง แบบ push-pull;Pin.AF_OD- กำหนดค่าพินสำหรับฟังก์ชันสำรอง แบบ open-drain;Pin.ANALOG- กำหนดค่าพินสำหรับอนาล็อก
pull สามารถเป็นหนึ่งใน:
Pin.PULL_NONE- ไม่มีตัวต้านทานดึงขึ้นหรือดึงลง;Pin.PULL_UP- เปิดใช้งานตัวต้านทานดึงขึ้น;Pin.PULL_DOWN- เปิดใช้งานตัวต้านทานดึงลง
เมื่อพินมีโหมดดึง
Pin.PULL_UPหรือPin.PULL_DOWNเปิดใช้งาน พินนั้นจะถูกดึงไปที่ 3V3 หรือ GND ตามลำดับผ่านตัวต้านทานภายใน (โดยทั่วไปเป็นสิบ kOhm -- ดูคุณลักษณะทางไฟฟ้าใน datasheet 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
ค่าคงที่¶