아두이노 나노 ESP32 - 버튼 - 긴 누름 짧은 누름 | Arduino Nano ESP32 - Button - Long Press Short Press
이 튜토리얼은 아두이노 나노 ESP32를 사용하여 긴 누름과 짧은 누름을 감지하는 방법에 대한 지침을 제공합니다. 자세히 말하면, 우리는 다음을 배우게 됩니다:
- 버튼의 짧은 누름을 감지하는 방법
- 버튼의 긴 누름을 감지하는 방법
- 긴 누름과 짧은 누름 모두를 감지하는 방법
준비물
1 | × | Arduino Nano ESP32 | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Push Button | 쿠팡 | Amazon | |
1 | × | (Optional) Panel-mount Push Button | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) DC Power Jack | 쿠팡 | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
버튼 정보
버튼에 관한 구체적인 튜토리얼이 있습니다. 각 튜토리얼은 하드웨어 핀 배치, 작동 원리, ESP32, 아두이노 나노 ESP32 코드에 대한 배선 연결에 대한 자세한 정보와 단계별 지침을 포함하고 있습니다. 다음 링크에서 자세히 알아보세요:
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
이 튜토리얼에서는 내부 풀업 저항을 사용할 것입니다. 버튼의 상태는 평소에는 HIGH이고 눌렀을 때는 LOW입니다.
단축키 감지 방법
- 눌린 이벤트와 떼어진 이벤트 사이의 시간을 측정합니다.
- 지속 시간이 사전에 정의된 시간보다 짧으면 짧은 누름 이벤트가 감지됩니다.
한 걸음씩 보자:
짧은 누름의 최대 지속 시간을 정의하십시오.
버튼이 눌렀는지 감지하고 누른 시간을 저장하세요.
버튼이 놓여졌는지 감지하고 놓여진 시간을 저장하세요.
압력 지속 시간을 계산하고
누름 시간을 정의된 짧은 누름 시간과 비교하여 짧게 누른 것인지 결정하세요.
단축 키 누르기 감지를 위한 아두이노 나노 ESP32 코드
사용 방법
- 아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 IDE에서 아두이노 나노 ESP32 환경 설정 방법을 참조하세요.
- 위의 코드를 아두이노 IDE를 통해 아두이노 나노 ESP32에 업로드하세요.
- 버튼을 여러 번 짧게 누릅니다.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같습니다:
※ NOTE THAT:
시리얼 모니터는 단일 클릭에 대해 여러 번의 짧은 클릭을 출력할 수 있습니다. 이것은 버튼의 정상적인 동작입니다. 이 동작은 "채터링 현상"이라고 불립니다. 이 문제를 해결하는 방법은 이 튜토리얼의 뒷부분에서 배우게 될 것입니다.
긴 누름 감지하는 방법
롱 프레스를 감지하기 위한 두 가지 사용 사례가 있습니다.
- 버튼을 놓자마자 롱 프레스 이벤트가 감지됩니다.
- 버튼을 누르고 있는 동안에 롱 프레스 이벤트가 감지됩니다.
첫 번째 경우에는:
- 누른 이벤트와 놓은 이벤트 사이의 시간 길이를 재십시오.
- 지속 시간이 사전에 정의된 시간보다 길 경우, 길게 누르기 이벤트가 감지됩니다.
두 번째 경우: 버튼을 누르는 동안, 아래 과정을 반복적으로 수행하세요:
- 압박 시간을 측정하세요.
- 지속 시간이 사전에 정의된 시간보다 길면, 긴-누름 이벤트가 감지됩니다.
- 그렇지 않으면, 버튼이 놓일 때까지 과정을 반복하세요.
Arduino Nano ESP32 코드: 길게 누르기가 릴리스될 때 감지하기
사용 방법
- Arduino Nano ESP32를 처음 사용하는 경우, Arduino Nano ESP32를 Arduino IDE에서 설정하는 방법을 참조하세요.
- 위의 코드를 Arduino IDE를 통해 Arduino Nano ESP32에 업로드합니다.
- 1초 후에 버튼을 눌렀다가 놓습니다.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같이 보입니다:
아두이노 나노 ESP32 코드, 누르는 동안 긴 누름 감지하기
사용 방법
- Arduino Nano ESP32를 처음 사용하는 경우, Arduino IDE에서 Arduino Nano ESP32 환경 설정하는 방법을 보려면 여기를 참고하세요.
- 위의 코드를 Arduino IDE를 통해 Arduino Nano ESP32에 업로드하세요.
- 몇 초 후 버튼을 눌렀다가 놓으세요.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같이 표시됩니다:
긴 누름과 짧은 누름을 모두 감지하는 방법
짧게 누르기와 길게 누른 후 놓기
사용 방법
- 아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 IDE에서 아두이노 나노 ESP32 환경 설정 방법을 확인하세요.
- 위의 코드를 아두이노 IDE를 통해 아두이노 나노 ESP32에 업로드하세요.
- 버튼을 길게 누르고 짧게 누르세요.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같습니다:
※ NOTE THAT:
시리얼 모니터는 긴 누름 동안 여러 번의 짧은 누름 감지를 표시할 수 있습니다. 이것은 버튼의 정상적인 동작입니다. 이러한 동작을 “차터링 현상”이라고 합니다. 이 문제는 이 튜토리얼의 마지막 부분에서 해결될 것입니다.
단축키와 롱 프레스 동안 누르기
사용 방법
- Arduino Nano ESP32를 처음 사용하는 경우, Arduino IDE에서 Arduino Nano ESP32 환경 설정 방법을 참조하십시오.
- 위의 코드를 Arduino IDE를 통해 Arduino Nano ESP32에 업로드하십시오.
- 버튼을 길게 누르고 짧게 누르십시오.
- 시리얼 모니터에서 결과를 확인하십시오. 아래와 같습니다:
롱 프레스와 숏 프레스 디바운싱 처리
많은 애플리케이션에서 버튼의 디바운스 처리는 매우 중요합니다.
디바운싱은 조금 복잡한데, 특히 여러 버튼을 사용할 때 그렇습니다. 초보자들이 쉽게 이해할 수 있도록, 우리는 ezButton이라는 라이브러리를 만들었습니다.
아래 코드에서 이 라이브러리를 사용할 것입니다.
짧은 누름과 긴 누름, 그리고 놓은 후 디바운싱 처리
사용 방법
- 아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 나노 ESP32의 환경설정 방법을 확인하세요.
- EzButton 라이브러리를 설치하세요. 설치 방법을 참조하세요.
- 위의 코드를 아두이노 IDE를 통해 아두이노 나노 ESP32에 업로드하세요.
- 버튼을 길게 및 짧게 누르세요.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같이 보일 것입니다.
누르는 동안 짧게 누르기와 길게 누르기, 디바운싱 처리
사용 방법
- Arduino Nano ESP32를 처음 사용하는 경우, Arduino IDE에서 Arduino Nano ESP32 환경 설정하는 방법을 참조하십시오.
- EzButton 라이브러리를 설치하십시오. 설치 방법을 참조하십시오.
- 위의 코드를 Arduino IDE를 통해 Arduino Nano ESP32에 업로드하십시오.
- 버튼을 길게 누르고 짧게 누르십시오.
- 시리얼 모니터에서 결과를 확인하십시오. 아래와 같이 보입니다:
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
왜 길게 누르기와 짧게 누르기가 필요한가요?
- 버튼 수와 디지털 입력 핀을 절약하기 위해 하나의 버튼으로 두 가지 이상의 기능을 유지할 수 있습니다. 예를 들어, 짧게 누르면 불을 켜고, 길게 누르면 선풍기를 켭니다.
- 우연히 눌러지는 것을 방지하기 위해 짧게 누르는 대신 길게 누르기를 사용하세요. 예를 들어, 일부 장치는 공장 초기화를 위해 버튼을 사용합니다. 버튼이 우연히 눌리면 위험합니다.