Как примечание, библиотека wiringPi, используемая с программами на Си, не имеет Cleanup()функции. похоже, что GPIO.cleanup()он доступен, потому что функциональность python ведет журнал изменений, чтобы очистить эти изменения. См raspberrypi.stackexchange.com/questions/44807/...
RPi.GPIO предоставляет встроенную функцию GPIO.cleanup () для очистки всех используемых вами портов. Но очень ясно, что это делает. Это влияет только на любые порты, которые вы установили в текущей программе. Он сбрасывает все порты, которые вы использовали в этой программе, обратно в режим ввода. Это предотвращает повреждение, скажем, в ситуации, когда у вас установлен порт HIGH в качестве выхода, и вы случайно подключаете его к GND (LOW), что приведет к короткому замыканию порта и, возможно, к его зажарению. Входы могут обрабатывать 0 В (НИЗКИЙ) или 3,3 В (ВЫСОКИЙ), поэтому безопаснее оставить порты в качестве входов.
Насколько мне известно, только модули RPi.GPIO и RPIO.GPIO Python имеют метод очистки. Метод очистки устанавливает все gpi, которые вы использовали в качестве входных данных, и отключает внутренние подтяжки / спады для этих gpi.
Мой модуль Python pigpio не имеет метода очистки, как и модуль Python wiringPi2, насколько я знаю.
@ Человек, я не думаю, что есть какая-то цель, я бы добавил такой метод, если бы думал, что это необходимо. Дастан в своем ответе указал на рассуждения, использованные автором RPi.GPIO. Это может быть скорее философским уклоном, я предполагаю, что у пользователей есть причина делать то, что они делают или не делают. Если они хотят оставить gpio в качестве ввода после завершения программы, они должны установить его в качестве ввода.
Джоан
1
Я столкнулся с несколькими проблемами при использовании GPIO, в основном касающимися попыток изменить режимы и направления выводов, которые уже были установлены в предыдущем сеансе. Например, иногда, если я запускаю программу, которая устанавливает вывод для вывода, а затем запускаю программу, которая устанавливает те же выводы для ввода без перезапуска pi, я получаю кучу предупреждений (например, «RunTimeWarning: этот канал уже находится в использовать "). Это особенно проблематично при вызове различных связанных с GPIO функций из одной программы, так как иногда происходит сбой программы.
Использование команды очистки до или после изменения настроек GPIO избавляет от предупреждений и позволяет программному обеспечению работать без каких-либо предупреждений о настройках GPIO.
Cleanup()
функции. похоже, чтоGPIO.cleanup()
он доступен, потому что функциональность python ведет журнал изменений, чтобы очистить эти изменения. См raspberrypi.stackexchange.com/questions/44807/...Ответы:
Как уже упоминалось в этой статье, Основы RPi.GPIO 3 - Как правильно выходить из программ GPIO, избегать предупреждений и защищать свой Pi , правильно использовать GPIO.cleanup (),
Надеюсь, это очистит ваши сомнения.
источник
Вам не нужно использовать метод очистки.
Насколько мне известно, только модули RPi.GPIO и RPIO.GPIO Python имеют метод очистки. Метод очистки устанавливает все gpi, которые вы использовали в качестве входных данных, и отключает внутренние подтяжки / спады для этих gpi.
Мой модуль Python pigpio не имеет метода очистки, как и модуль Python wiringPi2, насколько я знаю.
источник
Я столкнулся с несколькими проблемами при использовании GPIO, в основном касающимися попыток изменить режимы и направления выводов, которые уже были установлены в предыдущем сеансе. Например, иногда, если я запускаю программу, которая устанавливает вывод для вывода, а затем запускаю программу, которая устанавливает те же выводы для ввода без перезапуска pi, я получаю кучу предупреждений (например, «RunTimeWarning: этот канал уже находится в использовать "). Это особенно проблематично при вызове различных связанных с GPIO функций из одной программы, так как иногда происходит сбой программы.
Использование команды очистки до или после изменения настроек GPIO избавляет от предупреждений и позволяет программному обеспечению работать без каких-либо предупреждений о настройках GPIO.
источник