Зачем чистить контакты GPIO?


13

При запуске программы на Python, зачем мне нужна команда очистки при использовании GPIO?


Как примечание, библиотека wiringPi, используемая с программами на Си, не имеет Cleanup()функции. похоже, что GPIO.cleanup()он доступен, потому что функциональность python ведет журнал изменений, чтобы очистить эти изменения. См raspberrypi.stackexchange.com/questions/44807/...
Ричард Чамберс

Ответы:


14

Как уже упоминалось в этой статье, Основы RPi.GPIO 3 - Как правильно выходить из программ GPIO, избегать предупреждений и защищать свой Pi , правильно использовать GPIO.cleanup (),

Правильное использование GPIO.cleanup ()

RPi.GPIO предоставляет встроенную функцию GPIO.cleanup () для очистки всех используемых вами портов. Но очень ясно, что это делает. Это влияет только на любые порты, которые вы установили в текущей программе. Он сбрасывает все порты, которые вы использовали в этой программе, обратно в режим ввода. Это предотвращает повреждение, скажем, в ситуации, когда у вас установлен порт HIGH в качестве выхода, и вы случайно подключаете его к GND (LOW), что приведет к короткому замыканию порта и, возможно, к его зажарению. Входы могут обрабатывать 0 В (НИЗКИЙ) или 3,3 В (ВЫСОКИЙ), поэтому безопаснее оставить порты в качестве входов.

Надеюсь, это очистит ваши сомнения.


5

Вам не нужно использовать метод очистки.

Насколько мне известно, только модули RPi.GPIO и RPIO.GPIO Python имеют метод очистки. Метод очистки устанавливает все gpi, которые вы использовали в качестве входных данных, и отключает внутренние подтяжки / спады для этих gpi.

Мой модуль Python pigpio не имеет метода очистки, как и модуль Python wiringPi2, насколько я знаю.


Какова цель команды очистки тогда?
Человек

1
@ Человек, я не думаю, что есть какая-то цель, я бы добавил такой метод, если бы думал, что это необходимо. Дастан в своем ответе указал на рассуждения, использованные автором RPi.GPIO. Это может быть скорее философским уклоном, я предполагаю, что у пользователей есть причина делать то, что они делают или не делают. Если они хотят оставить gpio в качестве ввода после завершения программы, они должны установить его в качестве ввода.
Джоан

1

Я столкнулся с несколькими проблемами при использовании GPIO, в основном касающимися попыток изменить режимы и направления выводов, которые уже были установлены в предыдущем сеансе. Например, иногда, если я запускаю программу, которая устанавливает вывод для вывода, а затем запускаю программу, которая устанавливает те же выводы для ввода без перезапуска pi, я получаю кучу предупреждений (например, «RunTimeWarning: этот канал уже находится в использовать "). Это особенно проблематично при вызове различных связанных с GPIO функций из одной программы, так как иногда происходит сбой программы.

Использование команды очистки до или после изменения настроек GPIO избавляет от предупреждений и позволяет программному обеспечению работать без каких-либо предупреждений о настройках GPIO.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.