Python에서 프로그램을 실행할 때 GPIO를 사용할 때 정리 명령이 필요한 이유는 무엇입니까?
설명
답변
이 기사 RPi.GPIO 기초 3 – GPIO 프로그램을 깨끗하게 종료하고, 경고를 피하고, Pi를 보호하는 방법 , GPIO.cleanup ()의 올바른 사용,
GPIO.cleanup ()의 올바른 사용
RPi.GPIO는 내장 함수 GPIO.cleanup ()을 제공하여 모든 사용했던 포트입니다.하지만 이것이 무엇을하는지 명확하게 확인하세요. 현재 프로그램에서 설정 한 모든 포트에 영향을줍니다. 이 프로그램에서 사용한 모든 포트를 다시 입력 모드로 재설정합니다. 이렇게하면 포트가 HIGH로 설정된 상태에서 실수로 GND (LOW)에 연결하여 포트를 단락시켜 튀길 수있는 상황으로 인한 손상을 방지합니다. 입력은 0V (LOW) 또는 3.3V (HIGH)를 처리 할 수 있으므로 포트를 입력으로 남겨 두는 것이 더 안전합니다.
의심이 해소되기를 바랍니다.
답변
정리 방법을 사용할 필요가 없습니다.
내가 아는 한 RPi.GPIO 및 RPIO.GPIO Python 모듈에는 정리 방법이 있습니다. 정리 방법은 입력으로 사용했던 모든 gpios를 설정하고 해당 gpios에 대한 내부 풀업 / 다운을 비활성화합니다.
내 pigpio Python 모듈에는 정리 방법이 없으며 wirePi2 Python 모듈도 마찬가지입니다. 내가 아는 한.
댓글
- 그럼 정리 명령의 목적은 무엇입니까?
- @Human I ' 많은 목적이 있다고 생각하지 마십시오. 필요하다고 생각되면 ' 이러한 방법을 추가했을 것입니다. 그의 답변에서 dastaan은 RPi.GPIO 작성자가 사용한 추론을 지적했습니다. 좀 더 철학적 인 경향이있을 수 있습니다. 사용자는 자신이하는 일을하거나하지 않는 ' 이유가 있다고 가정합니다. 프로그램이 완료된 후 gpio를 입력으로 남겨 두려면 입력으로 설정해야합니다.
Answer
GPIO를 사용하는 데 몇 가지 문제가 발생했습니다. 주로 이전 세션에서 이미 설정 한 모드 및 핀 방향을 변경하려는 것과 관련이 있습니다. 예를 들어 핀을 출력으로 설정하는 프로그램을 실행 한 다음 pi를 다시 시작하지 않고 동일한 핀을 입력으로 설정하는 프로그램을 실행하면 여러 경고가 표시됩니다 (예 : “RunTimeWarning : This channel is already in 사용하다”). 때로는 프로그램이 충돌하기 때문에 단일 프로그램에서 다양한 GPIO 관련 함수를 호출 할 때 특히 문제가됩니다.
GPIO 설정 변경 전후에 정리 명령을 사용하면 경고가 제거되고 GPIO 설정 경고가 발생하지 않고 코드가 원활하게 실행됩니다.
Cleanup()
기능이 없습니다.GPIO.cleanup()
는 Python 기능이 변경 사항을 정리하기 위해 변경 사항 로그를 유지하므로 사용할 수 있습니다. raspberrypi.stackexchange.com/questions/44807/을 참조하십시오. …