ทำไมต้องล้างพิน GPIO


13

เมื่อรันโปรแกรมใน Python ทำไมฉันถึงต้องการคำสั่ง cleanup เมื่อใช้ GPIO


ในฐานะที่เป็นบันทึกด้านข้างห้องสมุด wiringPi ที่ใช้กับโปรแกรม C ไม่มีCleanup()ฟังก์ชั่น ปรากฏว่าGPIO.cleanup()มีอยู่เนื่องจากฟังก์ชันการทำงานของงูหลามเก็บบันทึกการเปลี่ยนแปลงเพื่อล้างข้อมูลการเปลี่ยนแปลงเหล่านั้น ดูraspberrypi.stackexchange.com/questions/44807/…
Richard Chambers

คำตอบ:


14

ดังที่กล่าวไว้ในบทความนี้RPi.GPIO เบื้องต้น 3 - วิธีการออกจากโปรแกรม GPIO อย่างหมดจดหลีกเลี่ยงคำเตือนและปกป้อง Pi ของคุณใช้ GPIO.cleanup () อย่างถูกต้อง

การใช้ GPIO.cleanup อย่างถูกต้อง ()

RPi.GPIO มีฟังก์ชันในตัว GPIO.cleanup () เพื่อล้างพอร์ตทั้งหมดที่คุณใช้ แต่ชัดเจนว่ามันทำอะไร มีผลกับพอร์ตใด ๆ ที่คุณตั้งค่าไว้ในโปรแกรมปัจจุบัน จะรีเซ็ตพอร์ตใด ๆ ที่คุณใช้ในโปรแกรมนี้กลับสู่โหมดอินพุต สิ่งนี้จะช่วยป้องกันความเสียหายจากสถานการณ์ที่คุณตั้งค่าพอร์ตเป็น HIGH และคุณตั้งใจเชื่อมต่อกับ GND (LOW) โดยไม่ตั้งใจซึ่งจะทำให้เกิดการลัดวงจรของพอร์ตและอาจทอดได้ อินพุตสามารถจัดการได้ทั้ง 0V (LOW) หรือ 3.3V (HIGH) ดังนั้นจึงปลอดภัยกว่าที่จะปล่อยให้พอร์ตเป็นอินพุต

หวังว่ามันจะเคลียร์ข้อสงสัยของคุณ


5

คุณไม่ต้องใช้วิธีการล้างข้อมูล

เท่าที่ฉันรู้เพียงโมดูล RPi.GPIO และ RPIO.GPIO Python มีวิธีการล้างข้อมูล วิธีการล้างข้อมูลตั้งค่า gpios ทั้งหมดที่คุณเคยใช้เป็นอินพุตและปิดใช้งานการดึง / ดาวน์ภายในสำหรับ gpios เหล่านั้น

โมดูล pigpio Python ของฉันไม่มีวิธีการล้างข้อมูลและไม่ต้องใช้โมดูล wiringPi2 Python เท่าที่ฉันทราบ


วัตถุประสงค์ของคำสั่งการล้างข้อมูลคืออะไร?
มนุษย์

1
@ มนุษย์ฉันไม่คิดว่ามันมีจุดประสงค์มากมายฉันได้เพิ่มวิธีการดังกล่าวหากฉันคิดว่ามันจำเป็น dastaan ​​ในคำตอบของเขาชี้ไปที่เหตุผลที่ใช้โดยผู้เขียน RPi.GPIO มันอาจจะเป็นเรื่องที่เกี่ยวกับปรัชญามากกว่าฉันคิดว่าผู้ใช้มีเหตุผลในการทำสิ่งที่พวกเขาทำหรือไม่ทำ หากพวกเขาต้องการปล่อยให้ gpio เป็นอินพุทหลังจากที่โปรแกรมเสร็จสิ้นพวกเขาควรตั้งเป็นอินพุท
joan

1

ฉันพบปัญหาเล็กน้อยในการใช้ GPIO ส่วนใหญ่เกี่ยวข้องกับการพยายามเปลี่ยนโหมดและทิศทางของหมุดที่ได้ตั้งค่าไว้แล้วในเซสชันก่อนหน้า ตัวอย่างเช่นบางครั้งถ้าฉันรันโปรแกรมที่ตั้งพินเป็นเอาท์พุทและจากนั้นฉันก็รันโปรแกรมที่ตั้งพินเดียวกันเป็นอินพุตโดยไม่ต้องรีสตาร์ท pi ฉันจะได้รับคำเตือนจำนวนมาก (เช่น "RunTimeWarning: ช่องนี้มีอยู่แล้ว ใช้"). นี่เป็นปัญหาโดยเฉพาะอย่างยิ่งเมื่อเรียกใช้ฟังก์ชันต่าง ๆ ที่เกี่ยวข้องกับ GPIO จากโปรแกรมเดียวเนื่องจากบางครั้งโปรแกรมขัดข้อง

การใช้คำสั่งล้างข้อมูลก่อนหรือหลังการเปลี่ยนการตั้งค่า GPIO จะเป็นการกำจัดคำเตือนและอนุญาตให้โค้ดทำงานได้อย่างราบรื่นโดยไม่ต้องมีคำเตือนในการตั้งค่า GPIO

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.