Mengapa membersihkan pin GPIO?

13

Saat menjalankan program dengan Python, mengapa saya ingin perintah pembersihan saat menggunakan GPIO?

Manusia
sumber
Sebagai catatan, pustaka wiringPi yang digunakan dengan program C tidak memiliki Cleanup()fungsi. tampaknya GPIO.cleanup()tersedia karena fungsionalitas python menyimpan log perubahan untuk membersihkan perubahan tersebut. Lihat raspberrypi.stackexchange.com/questions/44807/…
Richard Chambers

Jawaban:

14

Seperti disebutkan dalam artikel ini, dasar-dasar RPi.GPIO 3 - Cara Keluar dari program GPIO dengan bersih, hindari peringatan dan lindungi Pi Anda , perbaiki penggunaan GPIO.cleanup (),

Penggunaan GPIO.cleanup () yang benar

RPi.GPIO menyediakan fungsi bawaan GPIO.cleanup () untuk membersihkan semua port yang telah Anda gunakan. Tetapi sangat jelas apa yang dilakukannya. Ini hanya memengaruhi porta apa pun yang telah Anda tetapkan dalam program saat ini. Ini mengatur ulang port yang telah Anda gunakan dalam program ini kembali ke mode input. Ini mencegah kerusakan dari, katakanlah, situasi di mana Anda memiliki port yang mengatur HIGH sebagai output dan Anda secara tidak sengaja menghubungkannya ke GND (LOW), yang akan membuat hubungan pendek port dan mungkin menggorengnya. Input dapat menangani 0V (RENDAH) atau 3.3V (TINGGI), jadi lebih aman untuk meninggalkan port sebagai input.

Semoga ini menghilangkan keraguan Anda.

dhruvvyas90
sumber
5

Anda tidak harus menggunakan metode pembersihan.

Sejauh yang saya tahu hanya modul Python RPi.GPIO dan RPIO.GPIO yang memiliki metode pembersihan. Metode pembersihan menetapkan semua gpi yang telah Anda gunakan sebagai input dan menonaktifkan pull-up / down internal untuk gpi tersebut.

Modul Python pigpio saya tidak memiliki metode pembersihan, begitu juga modul wiringPi2 Python sejauh yang saya ketahui.

joan
sumber
Apa tujuan dari perintah pembersihan itu?
Manusia
1
@ Manusia saya tidak berpikir ada banyak tujuan, saya akan menambahkan metode seperti itu jika saya pikir itu diperlukan. dastaan ​​dalam jawabannya telah menunjuk pada alasan yang digunakan oleh penulis RPi.GPIO. Ini mungkin lebih bersifat bengkok, saya menganggap pengguna memiliki alasan untuk melakukan apa yang mereka lakukan atau tidak lakukan. Jika mereka ingin meninggalkan gpio sebagai input setelah program selesai, mereka harus mengaturnya sebagai input.
joan
1

Saya telah menemui beberapa masalah menggunakan GPIO, terutama yang berkaitan dengan mencoba mengubah mode dan pin arah yang telah ditetapkan pada sesi sebelumnya. Misalnya, kadang-kadang jika saya menjalankan program yang menetapkan pin ke output, dan kemudian saya menjalankan program yang mengatur pin yang sama untuk input tanpa memulai ulang pi, saya mendapatkan banyak peringatan (seperti "RunTimeWarning: Saluran ini sudah ada di menggunakan"). Ini khususnya bermasalah ketika memanggil berbagai fungsi terkait GPIO dari satu program, karena terkadang program macet.

Menggunakan perintah pembersihan baik sebelum atau setelah mengubah pengaturan GPIO menghilangkan peringatan dan memungkinkan kode untuk berjalan lancar tanpa peringatan pengaturan GPIO yang terjadi.

Dave
sumber