คำตอบ:
ดังที่กล่าวไว้ในบทความนี้RPi.GPIO เบื้องต้น 3 - วิธีการออกจากโปรแกรม GPIO อย่างหมดจดหลีกเลี่ยงคำเตือนและปกป้อง Pi ของคุณใช้ GPIO.cleanup () อย่างถูกต้อง
การใช้ GPIO.cleanup อย่างถูกต้อง ()
RPi.GPIO มีฟังก์ชันในตัว GPIO.cleanup () เพื่อล้างพอร์ตทั้งหมดที่คุณใช้ แต่ชัดเจนว่ามันทำอะไร มีผลกับพอร์ตใด ๆ ที่คุณตั้งค่าไว้ในโปรแกรมปัจจุบัน จะรีเซ็ตพอร์ตใด ๆ ที่คุณใช้ในโปรแกรมนี้กลับสู่โหมดอินพุต สิ่งนี้จะช่วยป้องกันความเสียหายจากสถานการณ์ที่คุณตั้งค่าพอร์ตเป็น HIGH และคุณตั้งใจเชื่อมต่อกับ GND (LOW) โดยไม่ตั้งใจซึ่งจะทำให้เกิดการลัดวงจรของพอร์ตและอาจทอดได้ อินพุตสามารถจัดการได้ทั้ง 0V (LOW) หรือ 3.3V (HIGH) ดังนั้นจึงปลอดภัยกว่าที่จะปล่อยให้พอร์ตเป็นอินพุต
หวังว่ามันจะเคลียร์ข้อสงสัยของคุณ
คุณไม่ต้องใช้วิธีการล้างข้อมูล
เท่าที่ฉันรู้เพียงโมดูล RPi.GPIO และ RPIO.GPIO Python มีวิธีการล้างข้อมูล วิธีการล้างข้อมูลตั้งค่า gpios ทั้งหมดที่คุณเคยใช้เป็นอินพุตและปิดใช้งานการดึง / ดาวน์ภายในสำหรับ gpios เหล่านั้น
โมดูล pigpio Python ของฉันไม่มีวิธีการล้างข้อมูลและไม่ต้องใช้โมดูล wiringPi2 Python เท่าที่ฉันทราบ
ฉันพบปัญหาเล็กน้อยในการใช้ GPIO ส่วนใหญ่เกี่ยวข้องกับการพยายามเปลี่ยนโหมดและทิศทางของหมุดที่ได้ตั้งค่าไว้แล้วในเซสชันก่อนหน้า ตัวอย่างเช่นบางครั้งถ้าฉันรันโปรแกรมที่ตั้งพินเป็นเอาท์พุทและจากนั้นฉันก็รันโปรแกรมที่ตั้งพินเดียวกันเป็นอินพุตโดยไม่ต้องรีสตาร์ท pi ฉันจะได้รับคำเตือนจำนวนมาก (เช่น "RunTimeWarning: ช่องนี้มีอยู่แล้ว ใช้"). นี่เป็นปัญหาโดยเฉพาะอย่างยิ่งเมื่อเรียกใช้ฟังก์ชันต่าง ๆ ที่เกี่ยวข้องกับ GPIO จากโปรแกรมเดียวเนื่องจากบางครั้งโปรแกรมขัดข้อง
การใช้คำสั่งล้างข้อมูลก่อนหรือหลังการเปลี่ยนการตั้งค่า GPIO จะเป็นการกำจัดคำเตือนและอนุญาตให้โค้ดทำงานได้อย่างราบรื่นโดยไม่ต้องมีคำเตือนในการตั้งค่า GPIO
Cleanup()
ฟังก์ชั่น ปรากฏว่าGPIO.cleanup()
มีอยู่เนื่องจากฟังก์ชันการทำงานของงูหลามเก็บบันทึกการเปลี่ยนแปลงเพื่อล้างข้อมูลการเปลี่ยนแปลงเหล่านั้น ดูraspberrypi.stackexchange.com/questions/44807/…