라즈베리 파이 버튼 길게 누르기 짧게 누르기
이 튜토리얼은 라즈베리 파이를 사용하여 버튼의 짧은 누름과 긴 누름을 탐지하는 방법을 가르칩니다. 간단하게 하기 위해 다음과 같은 예제로 나누겠습니다.
- Raspberry Pi는 버튼의 짧은 눌림을 감지합니다.
- Raspberry Pi는 버튼의 긴 눌림을 감지합니다.
- Raspberry Pi는 버튼의 짧은 눌림과 긴 눌림을 모두 감지합니다.
- Raspberry Pi는 긴 눌림과 짧은 눌림 모두 디바운싱합니다.
마지막 섹션에서는 실용적인 환경에서 디바운스를 활용하는 방법을 탐구할 것입니다. 버튼에 대한 디바운스가 필요한 이유에 대한 자세한 내용은 이 기사를 참조하십시오. 디바운스 없이 버튼의 짧은 누름을 잘못 감지할 수 있습니다.
Hardware Preparation
1 | × | Raspberry Pi 4 Model B | Amazon | |
1 | × | Breadboard-mount Button with Cap | 쿠팡 | Amazon | |
1 | × | Breadboard-mount Button Kit | 쿠팡 | Amazon | |
1 | × | Panel-mount Push Button | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (추천) Screw Terminal Block Shield for Raspberry Pi | 쿠팡 | Amazon | |
1 | × | (추천) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B | Amazon | |
1 | × | (추천) Plastic Case and Cooling Fan for Raspberry Pi 4B | Amazon | |
1 | × | (추천) HDMI Touch Screen Monitor for Raspberry Pi | Amazon |
버튼 정보
버튼(핀아웃, 작동 방식, 프로그래밍 방법 포함)에 익숙하지 않은 경우, 다음 튜토리얼이 안내를 제공할 수 있습니다:
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:
이 튜토리얼에서는 내부 풀업 저항을 사용할 것입니다. 따라서 버튼이 눌리지 않았을 때는 상태가 HIGH이고, 눌렸을 때는 상태가 LOW입니다.
짧은 눌림 감지 방법
누르는 이벤트와 놓는 이벤트 사이의 시간을 계산합니다. 이 기간이 미리 정해진 시간보다 짧으면 짧은 눌림 이벤트를 감지합니다.
짧게 누름의 지속 시간을 지정하세요.
- 버튼이 눌렸는지 감지하고 눌린 시간을 기록하세요.
- 버튼이 놓인 시간을 확인하고 놓은 시간을 기록합니다.
- 누르는 시간을 결정하십시오.
- 짧은 누름 시간으로 정의된 시간과 누름 지속 시간을 비교하여 짧은 누름을 식별합니다.
버튼 짧게 누르기를 감지하는 Raspberry Pi 코드
Detailed Instructions
- 라즈비안 또는 기타 Raspberry Pi 호환 운영 체제가 Pi에 설치되어 있는지 확인하세요.
- Raspberry Pi가 PC와 동일한 로컬 네트워크에 연결되어 있는지 확인하세요.
- 라이브러리를 설치해야 하는 경우 Raspberry Pi가 인터넷에 연결되어 있는지 확인하세요.
- 처음 Raspberry Pi를 사용하는 경우 Raspberry Pi 설정 방법을 참조하세요.
- Linux 및 macOS에서는 내장된 SSH 클라이언트를 사용하거나 Windows에서는 PuTTY를 사용하여 SSH를 통해 Raspberry Pi에 PC를 연결하세요. SSH를 통해 PC를 Raspberry Pi에 연결하는 방법을 참조하세요.
- RPi.GPIO 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않으면 다음 명령어를 사용하여 설치하세요:
- 파이썬 스크립트 파일 short_press.py을(를) 생성하고 다음 코드를 추가하십시오.
- 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하세요:
- 버튼을 짧게 여러 번 누르세요.
- 터미널에서 결과를 확인하세요.
스크립트는 터미널에서 Ctrl + C를 누를 때까지 무한 루프에서 계속 실행됩니다.
길게 누르기를 감지하는 방법
긴 누르기를 인식하는 두 가지 시나리오가 있습니다:
- 버튼이 해제된 직후에 롱 프레스 이벤트가 식별됩니다.
- 버튼이 눌린 상태에서도, 해제되기 전에도 롱 프레스 이벤트가 식별됩니다.
첫 번째 시나리오에서는 누름 및 해제 이벤트 사이의 지속 시간이 계산됩니다. 이 지속 시간이 미리 정해진 시간을 초과하면, 롱 프레스 이벤트가 식별됩니다.
두 번째 시나리오에서는 버튼이 눌렸을 때, 버튼을 뗄 때까지 누른 시간을 지속적으로 확인합니다. 버튼을 누르고 있는 동안 시간이 미리 정해진 시간을 초과하면, 롱프레스 이벤트가 감지됩니다.
라즈베리 파이 코드: 버튼을 떼면 롱 프레스 감지
Detailed Instructions
- Python 스크립트 파일 long_press_1.py을 생성하고 다음 코드를 추가하세요:
- 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하십시오:
- 버튼을 2초 동안 누른 후 버튼을 놓으세요.
- 터미널에서 결과를 확인하세요.
버튼이 놓였을 때만 길게 누르는 이벤트가 인식됩니다.
누름 중 장시간 눌림을 감지하는 Raspberry Pi 코드
Detailed Instructions
- 파이썬 스크립트 파일 long_press_2.py를 작성하고 다음 코드를 추가하세요.
- 파일을 저장하고 터미널에서 다음 명령을 실행하여 Python 스크립트를 실행하세요:
- 버튼을 누르고 몇 초간 유지한 후 버튼에서 손을 떼세요.
- 시리얼 모니터에서 결과를 확인하세요.
버튼이 놓이지 않았을 때도 길게 누르는 이벤트만 감지됩니다.
길게 누르기와 짧게 누르기를 모두 감지하는 방법
Detailed Instructions
- 파이썬 스크립트 파일 long_short_press.py을(를) 생성하고 다음 코드를 추가하십시오:
- 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하세요:
- 버튼을 짧게 또는 길게 눌러보세요.
- 터미널에서 결과를 확인하세요.
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
왜 길게 누르기와 짧게 누르기가 필요한가
- 버튼 수를 최소화하기 위해 하나의 버튼으로 여러 기능을 수행할 수 있습니다. 예를 들어, 짧게 누르면 작동 모드를 전환할 수 있고, 길게 누르면 기기를 종료할 수 있습니다.
- 길게 누르는 기능은 실수로 짧게 누르는 것을 방지하는 데 도움이 됩니다. 예를 들어, 일부 기기는 버튼을 사용하여 초기화를 시작합니다. 버튼이 실수로 눌리면 위험할 수 있습니다. 이를 방지하기 위해 버튼을 일정 시간(예: 5초 동안) 눌러야만 기기가 초기화를 시작하도록 설계되었습니다.