ESP8266 - 버튼 - 디바운스 | ESP8266 - Button - Debounce
버튼이 눌리거나 놓이거나, 스위치가 켜질 때, 초보자들은 종존 상태가 LOW에서 HIGH 또는 HIGH에서 LOW로 변한다고 가정하는 경우가 많습니다. 실제로는 그렇지 않습니다. 기계적, 물리적 특성으로 인해 버튼(또는 스위치)의 상태는 사용자의 단일 동작당 여러 번 LOW와 HIGH 사이를 반복적으로 변동할 수 있습니다. 이를 차터링이라고 합니다. 차터링은 단일 누름이 여러 번 누름으로 읽히게 하여 특정 애플리케이션에서 오작동을 일으킬 수 있습니다.
이 문제를 방지하는 방법은 디바운싱이라고 하며, 이 튜토리얼은 ESP8266을 사용할 때 버튼과 함께하는 방법을 알려드립니다. 다음 단계를 통해 배우게 됩니다:
- 디바운싱 없는 ESP8266 코드.
- 버튼의 디바운싱이 있는 ESP8266 코드.
- EzButton 라이브러리를 사용하여 버튼의 디바운싱이 있는 ESP8266 코드.
- 여러 버튼을 위한 디바운싱이 있는 ESP8266 코드.
준비물
1 | × | ESP8266 NodeMCU | Amazon | |
1 | × | Micro USB Cable | Amazon | |
1 | × | Push Button | 쿠팡 | Amazon | |
1 | × | (Optional) Panel-mount Push Button | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 5V Power Adapter for ESP8266 | Amazon | |
1 | × | (Optional) Screw Terminal Expansion Board for ESP8266 | 쿠팡 | Amazon |
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP8266의 핀 배치 및 ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.
ESP8266 코드를 디바운스 있음과 없음으로 나누어서 각각의 행동을 비교해 보도록 하겠습니다.
디바운스 없는 읽기 버튼
디바운싱을 탐색하기 전에, 디바운싱 없이 코드를 확인하고 그 동작을 관찰하세요.
사용 방법
아두이노 IDE에서 ESP8266을 시작하려면 다음 단계를 따르세요:
- ESP8266을 처음 사용하는 경우 Arduino IDE에서 ESP8266 환경 설정하는 방법 튜토리얼을 확인하세요.
- 다이어그램에 표시된 대로 구성 요소를 연결하세요.
- USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 Arduino IDE를 엽니다.
- 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
- USB 케이블을 사용하여 ESP8266을 컴퓨터에 연결하세요.
- Arduino IDE를 실행하고 적절한 보드와 포트를 선택하세요.
- 아래 코드를 복사하고 Arduino IDE에서 엽니다.
Arduino IDE에서 ESP8266에 코드를 컴파일하고 업로드하려면 Upload 버튼을 클릭하세요.
- 시리얼 모니터를 엽니다.
- 버튼을 몇 초간 누르고 있었다가 놓으세요.
- 시리얼 모니터에서 출력을 확인하세요.
당신은 때때로 버튼을 단 한 번만 누르고 놓았음에도 불구하고, ESP8266이 그것을 여러 번 누르고 놓은 것으로 인식하는 것을 볼 수 있습니다. 이것은 튜토리얼 시작 부분에서 언급된 치터링 현상입니다. 다음 파트에서 이를 어떻게 해결하는지 살펴보겠습니다.
디바운스를 사용한 읽기 버튼
아래 코드는 디바운스라고 불리는 메소드를 적용하여 채터링 현상을 방지합니다.
사용 방법
- 다이어그램에 표시된 대로 구성 요소를 연결하세요.
- USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 Arduino IDE를 엽니다.
- 올바른 ESP8266 보드를 선택하세요. 예를 들어, NodeMCU 1.0 (ESP-12E Module)과 해당 COM 포트를 선택하세요.
- 위의 코드를 복사하여 Arduino IDE로 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP8266에 컴파일하고 업로드하세요.
- 시리얼 모니터를 엽니다.
- 몇 초 동안 버튼을 누른 상태로 유지한 다음 놓습니다.
- 결과를 보려면 시리얼 모니터를 확인하세요.
당신이 알 수 있듯이, 당신은 버튼을 한 번만 누르고 놓았습니다. ESP8266은 그것을 단일 누르기와 놓기로 감지할 수 있어, 불필요한 잡음을 제거합니다.
우리가 단순화했습니다 - 라이브러리를 이용한 ESP8266 버튼 디바운스 코드
우리는 시작하는 사람들, 특히 여러 버튼을 사용할 때 더 간단하게 만들기 위해 ezButton 라이브러리를 개발했습니다. ezButton 라이브러리에 대해 더 알아보기.
ESP8266 단일 버튼 디바운스 코드
ESP8266 여러 버튼용 버튼 디바운스 코드
위 코드에 대한 개략도:.
위 코드의 배선에 대한 도면:.
위 코드의 연결 표현:.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
추가 지식
DEBOUNCE_DELAY의 값은 버튼의 물리적 특성에 따라 달라집니다. 각 버튼마다 다른 값을 가질 수 있습니다.
확장성
디바운스 기술은 스위치, 터치 센서 등에 사용될 수 있습니다.