Tại sao phải làm sạch các chân GPIO?


13

Khi chạy một chương trình trong Python, tại sao tôi lại muốn lệnh dọn dẹp khi sử dụng GPIO?


Là một lưu ý phụ, thư viện WiredPi được sử dụng với các chương trình C không có Cleanup()chức năng. có vẻ như GPIO.cleanup()là có sẵn vì chức năng python giữ một bản ghi các thay đổi để dọn sạch những thay đổi đó. Xem raspberrypi.stackexchange.com/questions/44807/ trộm
Richard Chambers

Câu trả lời:


14

Như đã đề cập trong bài viết này RPi.GPIO cơ bản 3 - Cách thoát chương trình GPIO sạch sẽ, tránh cảnh báo và bảo vệ Pi của bạn , sử dụng đúng GPIO.cleanup (),

Sử dụng đúng GPIO.cleanup ()

RPi.GPIO cung cấp chức năng GPIO.cleanup () tích hợp để dọn sạch tất cả các cổng bạn đã sử dụng. Nhưng hãy thật rõ ràng những gì nó làm. Nó chỉ ảnh hưởng đến bất kỳ cổng nào bạn đã đặt trong chương trình hiện tại. Nó đặt lại bất kỳ cổng nào bạn đã sử dụng trong chương trình này trở về chế độ đầu vào. Điều này ngăn ngừa thiệt hại từ một tình huống trong đó bạn có một cổng được đặt CAO làm đầu ra và bạn vô tình kết nối nó với GND (THẤP), điều này sẽ làm đoản mạch cổng và có thể chiên nó. Đầu vào có thể xử lý 0V (THẤP) hoặc 3,3V (CAO), vì vậy an toàn hơn khi để các cổng làm đầu vào.

Hy vọng nó xóa tan nghi ngờ của bạn.


5

Bạn không phải sử dụng phương pháp dọn dẹp.

Theo như tôi biết thì chỉ có các mô-đun Python RPi.GPIO và RPIO.GPIO có phương thức dọn dẹp. Phương thức dọn dẹp thiết lập tất cả các gpios bạn đã sử dụng làm đầu vào và vô hiệu hóa các lần kéo / xuống bên trong cho các gpios đó.

Mô-đun Python pigpio của tôi không có phương pháp dọn dẹp, mô-đun Python dâyPi2 cũng không theo như tôi biết.


Mục đích của lệnh dọn dẹp sau đó là gì?
Con người

1
@ Con người tôi không nghĩ có nhiều mục đích, tôi đã thêm một phương pháp như vậy nếu tôi nghĩ nó cần thiết. dastaan ​​trong câu trả lời của mình đã chỉ ra lý do được sử dụng bởi tác giả RPi.GPIO. Nó có thể là một khuynh hướng triết học, tôi cho rằng người dùng có lý do để làm những gì họ làm hoặc không làm. Nếu họ muốn để lại một gpio làm đầu vào sau khi chương trình kết thúc, họ nên đặt nó làm đầu vào.
joan

1

Tôi đã gặp một vài vấn đề khi sử dụng GPIO, chủ yếu liên quan đến việc cố gắng thay đổi chế độ và hướng ghim đã được đặt trong phiên trước. Ví dụ: đôi khi nếu tôi chạy một chương trình đặt chân thành đầu ra và sau đó tôi chạy chương trình đặt các chân tương tự thành đầu vào mà không khởi động lại pi, tôi nhận được một loạt các cảnh báo (chẳng hạn như "RunTimeWarning: Kênh này đã có sử dụng"). Điều này đặc biệt có vấn đề khi gọi các chức năng liên quan đến GPIO khác nhau từ một chương trình, vì đôi khi chương trình gặp sự cố.

Sử dụng lệnh dọn dẹp trước hoặc sau khi thay đổi cài đặt GPIO sẽ loại bỏ các cảnh báo và cho phép mã chạy trơn tru mà không có bất kỳ cảnh báo cài đặt GPIO nào xảy ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.