Навіщо чистити шпильки GPIO?


13

Під час запуску програми в Python, чому я хочу команду очищення при використанні GPIO?


Як бічна примітка, бібліотека wiringPi, що використовується для програм C, не має 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 мають метод очищення. Метод очищення встановлює всі gpios, які ви використовували для введення, і вимикає внутрішні підтягування / падіння для цих gpios.

Мій модуль pigpio Python не має методу очищення, а також модуля wiringPi2 Python, наскільки мені відомо.


Яка мета команди очищення тоді?
Людина

1
@Human Я не думаю, що це багато чого, я б додав такий метод, якби вважав, що це потрібно. Дастаан у своїй відповіді вказав на міркування, якими користується автор RPi.GPIO. Це може бути скоріше філізофський вигин, я припускаю, що у користувачів є причина робити те, що вони роблять чи не роблять. Якщо вони хочуть залишити gpio як вхід після завершення програми, вони повинні встановити його як вхід.
Джоан

1

У мене виникли декілька проблем із використанням GPIO, в основному стосуються спроб змінити режими та вказувати напрямки, які вже були встановлені в попередньому сеансі. Наприклад, іноді, якщо я запускаю програму, яка встановлює штифти для виведення, а потім я запускаю програму, яка встановлює ті самі штифти для введення, не перезавантажуючи пі, я отримую купу попереджень (наприклад, "RunTimeWarning: Цей канал вже в використовувати "). Це особливо проблематично при виклику різних функцій, пов'язаних з GPIO, з однієї програми, оскільки іноді програма виходить з ладу.

Використання команди очищення перед або після зміни налаштувань GPIO позбавляється від попереджень і дозволяє коду безперебійно працювати без будь-яких попереджень про налаштування GPIO.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.