ESP32 C3 Super Mini 버튼
ESP32 C3 Super Mini에서 버튼을 사용하는 방법을 배우는 것은 모든 Arduino 프로젝트의 가장 중요한 기술 중 하나입니다. 이 튜토리얼은 초보자가 버튼 배선, 코딩 및 일반적인 문제 해결을 쉽게 이해할 수 있도록 합니다.
이 튜토리얼에서 배울 내용:
- 푸시 버튼이 무엇이며 ESP32 C3 Super Mini에서 어떻게 작동하는지
- 버튼 (PCB 마운트 및 패널 마운트)을 ESP32에 연결하는 방법
- 버튼 상태를 읽고 누르기를 감지하는 코드를 작성하는 방법
- 부동 입력 및 디바운스 문제와 같은 초보자 실수를 피하는 방법

※ 주의:
버튼에 대해 설명하기 전에 초보자들이 일반적으로 만나는 두 가지 일반적인 실수를 알리고 싶습니다:
- 부동 입력 문제:
- 증상: ESP32 C3 Super Mini 입력 핀에 버튼을 연결할 때 입력 핀의 상태는 임의적이고 버튼의 누르기 상태와 일치하지 않습니다.
- 원인: 버튼 핀이 풀다운 저항 또는 풀업 저항을 사용하지 않습니다.
- 해결책: ⇒ 입력 핀에 풀다운 저항 또는 풀업 저항을 사용합니다. 상세한 내용은 이 튜토리얼의 나중에 설명됩니다.
- 증상: ESP32 C3 Super Mini의 코드가 버튼의 상태를 읽고 상태 변경 (HIGH에서 LOW로 또는 LOW에서 HIGH로)을 감지하여 누르기 이벤트를 식별합니다. 버튼을 실제로 한 번만 누르면 ESP32 C3 Super Mini 코드가 한 번이 아닌 여러 번 누르기를 감지합니다.
- 원인: 기계적 및 물리적 특성으로 인해 버튼을 한 번 누르면 입력 핀의 상태가 한 번이 아닌 여러 번 LOW와 HIGH 사이에서 빠르게 토글됩니다
- 해결책: ⇒ 디바운스. 상세한 내용은 ESP32 C3 Super Mini - 버튼 - 디바운스 튜토리얼에 설명되어 있습니다.
채터링 현상은 정확한 누르기 수를 감지해야 하는 특정 종류의 응용 프로그램에서만 오작동을 일으킵니다. 어떤 종류의 응용 프로그램에서는 해롭지 않습니다.
필요한 하드웨어
| 1 | × | ESP32 C3 Super Mini | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | 캡이 있는 버튼 | 쿠팡 | 아마존 | |
| 1 | × | 버튼 키트 | 쿠팡 | 아마존 | |
| 1 | × | 패널 장착 푸시 버튼 | 아마존 | |
| 1 | × | 푸시 버튼 모듈 | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (옵션) DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 |
버튼 정보
푸시 버튼은 누르면 닫히고 놓으면 열리는 간단한 스위치입니다.
일반적인 버튼 유형:
- PCB 마운트 푸시 버튼 (브레드보드에 완벽)
- 패널 마운트 푸시 버튼 (프로젝트 인클로저용)
- 버튼 모듈 (내장 풀다운 저항 포함)
버튼이 유용한 이유:
- ESP32 C3 Super Mini 프로젝트를 위한 간단한 사용자 입력
- LED, 모터 및 기타 출력 제어
- 코드에서 작업 및 이벤트 트리거

버튼 핀아웃
PCB 마운트 버튼 (4개 핀)
PCB 마운트 버튼에는 내부적으로 쌍으로 연결된 4개의 핀이 있습니다.

주요 포인트:
- 2개의 핀만 필요합니다 (다른 쌍에서)
- 4개의 배선 옵션이 있지만 2개의 실용적인 방법으로 줄어듭니다
- 4개의 핀은 누르기 힘에 안정성을 제공합니다

패널 마운트 버튼 (2개 핀)
패널 마운트 버튼에는 두 개의 간단한 핀이 있습니다.

버튼 모듈 (3개 핀)
버튼 모듈에는 안정적인 작동을 위한 내장 풀다운 저항이 포함되어 있습니다.
- GND: 그라운드에 연결
- VCC: 3.3V 전원 공급에 연결
- OUT: ESP32 C3 Super Mini 디지털 입력 핀에 연결 (누르지 않았을 때 LOW, 눌렀을 때 HIGH 출력)
버튼이 작동하는 방법
버튼은 상태를 기반으로 두 핀을 연결하거나 연결 해제합니다.
- 누를 때: 핀 A가 핀 B에 연결됩니다
- 놓을 때: 핀 A가 핀 B에서 연결 해제됩니다

ESP32 C3 Super Mini - 버튼
한 버튼 핀은 ESP32 C3 Super Mini 디지털 입력 핀에 연결되고, 다른 하나는 VCC 또는 GND에 연결됩니다.
버튼 상태 읽기:
- ESP32 코드가 입력 핀 상태를 읽습니다
- 상태는 버튼이 눌렸는지 여부를 알려줍니다
입력 상태와 누르기 상태
입력 핀 상태와 버튼 누르기 상태 간의 관계는 배선 구성에 따라 달라집니다.
두 가지 일반적인 배선 방법:
- 버튼이 VCC에 연결됨:
- 풀다운 저항 필요
- 버튼 누르기 = HIGH 신호
- 버튼 놓기 = LOW 신호
- 풀업 저항 필요
- 버튼 누르기 = LOW 신호
- 버튼 놓기 = HIGH 신호
※ 주의:
풀다운 저항 또는 풀업 저항을 사용하지 않으면 버튼을 누르지 않았을 때 입력 핀의 상태는 HIGH 또는 LOW 사이에서 임의적입니다 (불안정하고 고정되지 않음). 이것을 "부동 입력 문제"라고 합니다. 이로 인해 오작동이 발생합니다.
초보자 팁:
- ESP32의 내부 풀업 저항을 사용합니다 (외부 부품 필요 없음)
- 배선을 간단히 하고 하드웨어 요구 사항을 줄입니다
ESP32 C3 Super Mini와 버튼 간의 배선 다이어그램
다양한 버튼 유형을 ESP32 C3 Super Mini에 연결하는 방법은 다음과 같습니다.
PCB 마운트 버튼으로 배선:

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| Button Pin | ESP32 C3 Super Mini Pin |
|---|---|
| Pin A | GPIO7 |
| Pin B | GND |
패널 마운트 버튼으로 배선:

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| Button Pin | ESP32 C3 Super Mini Pin |
|---|---|
| Pin 1 | GPIO7 |
| Pin 2 | GND |
버튼을 프로그래밍하는 방법
ESP32 C3 Super Mini에서 버튼을 프로그래밍하는 것은 두 가지 간단한 단계를 포함합니다.
단계 1: 내부 풀업으로 핀 초기화:
단계 2: 버튼 상태 읽기:
두 가지 일반적인 사용 사례:
※ 주의:
널리 사용되는 두 가지 사용 사례가 있습니다:
- 첫 번째 사용 사례: 입력 상태가 HIGH이면 뭔가를 합니다. 입력 상태가 LOW이면 다른 것을 합니다.
- 두 번째 사용 사례: 입력 상태가 LOW에서 HIGH로 변경되면 뭔가를 합니다. 입력 상태가 HIGH에서 LOW로 변경되면 다른 것을 합니다.
응용 프로그램에 따라 이 중 하나를 사용합니다. 예를 들어 버튼으로 LED를 제어하는 경우:
- 버튼을 누르면 LED를 켜고 버튼을 누르지 않으면 LED를 끄려면 첫 번째 경우를 사용해야 합니다.
- 버튼을 누를 때마다 LED를 ON과 OFF 사이에서 토글하려면 두 번째 경우를 사용해야 합니다.
예제: LOW에서 HIGH로의 상태 변경 감지:
ESP32 C3 Super Mini 코드
이 코드는 Serial Monitor에서 버튼 상태를 읽고 표시합니다.
코드가 하는 일:
- D2 핀을 내부 풀업 저항이 있는 입력으로 구성합니다
- 버튼 상태를 지속적으로 읽습니다
- 상태 (HIGH 또는 LOW)를 Serial Monitor에 인쇄합니다
- 100밀리초마다 업데이트합니다
빠른 단계
- Arduino를 처음 사용하세요? 먼저 ESP32 C3 Super Mini 시작하기 가이드를 시작하세요.
- 컴포넌트 연결: 위에 표시된 배선 다이어그램을 따릅니다.
- 보드 연결: USB 케이블을 통해 ESP32 C3 Super Mini를 컴퓨터에 플러그합니다.
- Arduino IDE 열기: 컴퓨터에서 소프트웨어를 실행합니다.
- 보드 선택: ESP32 C3 Super Mini와 올바른 COM 포트를 선택합니다.
- 코드 업로드: 아래 코드를 복사하여 Arduino IDE에 붙여넣습니다.
- 컴파일 및 업로드: Arduino IDE에서 Upload 버튼을 클릭합니다.

- Serial Monitor 열기: Arduino IDE에서 Serial Monitor 아이콘을 클릭합니다.

- 버튼 테스트: 버튼을 여러 번 누르고 놓습니다.
- 결과 보기: Serial Monitor 출력을 확인합니다.
- Pro Tip: Serial Monitor 보드 레이트를 115200으로 설정하여 코드와 일치시킵니다.
Serial Monitor 출력
참고: 1은 HIGH (버튼 놓음), 0은 LOW (버튼 누름)를 나타냅니다.
라인별 코드 설명
위의 ESP32 C3 Super Mini 코드에는 라인별 설명이 포함되어 있습니다. 코드의 주석을 읽으세요!
ESP32 C3 Super Mini 코드 수정
상태만 읽지 말고 누르기 및 놓기 이벤트를 감지하도록 코드를 개선해 봅시다.
이 수정된 코드가 하는 일:
- 버튼이 눌렸을 때 감지 (상태가 HIGH에서 LOW로 변경)
- 버튼이 놓았을 때 감지 (상태가 LOW에서 HIGH로 변경)
- 각 이벤트에 대해 명확한 메시지를 인쇄합니다
- 이전 상태를 추적하여 변경 사항을 식별합니다
빠른 단계
- 환경 설정: ESP32 C3 Super Mini를 처음 사용하는 경우 Arduino IDE에서 ESP32 C3 Super Mini 환경을 설정하는 방법을 참고하세요.
- 코드 수정: 이전 코드를 아래 코드로 바꿉니다.
- 코드 업로드: ESP32 C3 Super Mini 보드에 컴파일하고 업로드합니다.
- Serial Monitor 열기: 출력 창을 봅니다.
- 테스트: 버튼을 누르고 놓습니다.
- 결과 관찰: 이벤트 메시지를 위해 Serial Monitor를 확인합니다.
Serial Monitor 출력
※ 주의:
- Serial Monitor는 한 번의 누르기 및 놓기만 했어도 여러 개의 누르기 및 놓기 이벤트를 인쇄할 수 있습니다. 이것은 버튼의 정상적인 동작입니다. 이 동작을 "채터링 현상"이라고 합니다. 일부 응용 프로그램에서는 이를 제거하는 방법이 필요합니다. ESP32 C3 Super Mini - 버튼 디바운스 튜토리얼에서 자세히 알아볼 수 있습니다.
- 초보자를 위해 간단하게 하려면, 특히 여러 버튼을 사용할 때 ezButton이라는 라이브러리를 만들었습니다. 여기서 ezButton 라이브러리에 대해 배울 수 있습니다.
응용 프로그램/프로젝트 아이디어
ESP32 C3 Super Mini 프로젝트에서 버튼을 사용하는 창의적인 방법입니다.
- 버튼 누르기로 LED 밝기 또는 색상 제어
- 디지털 카운터 또는 스코어보드 생성
- 여러 버튼이 있는 퀴즈 버저 시스템 구축
- 버튼 활성화 경보가 있는 보안 시스템 설계
- 음악 플레이어 컨트롤러 만들기 (재생, 일시 정지, 건너뛰기)
- 스마트 홈 라이트 스위치 교체 개발
비디오 섹션
이 프로젝트의 시각적 설명을 보려면 아래 비디오를 시청하세요.
자신을 시도해보기
이러한 과제를 통해 버튼 기술을 다음 수준으로 끌어올립니다.
- 쉬움: 버튼을 누를 때 켜지는 LED를 추가합니다
- 쉬움: 버튼이 눌린 횟수를 세고 개수를 표시합니다
- 중간: 짧은 누르기와 긴 누르기에 대해 다른 작업을 트리거하는 긴 누르기 감지기를 만듭니다
- 중간: 여러 누르기 감지를 제거하려면 적절한 디바운싱을 구현합니다
- 고급: 비밀 코드 시퀀스가 있는 여러 버튼을 사용하여 조합 잠금 구축
추가 지식
풀업 또는 풀다운 저항을 언제 사용할지 이해하는 것은 신뢰할 수 있는 ESP32 C3 Super Mini 프로젝트에 필수입니다.
풀업/풀다운 저항을 사용해야 할 때:
- 사용해야 함: 두 가지 상태 (열림/닫힘)의 센서에는 명확한 HIGH/LOW 신호를 만드는 저항이 필요합니다
- 예제: 푸시 버튼, 스위치, 자기 접점 스위치 (도어 센서)
- 사용하지 말아야 함: 전압 레벨 (LOW/HIGH)을 출력하는 센서는 저항이 필요하지 않습니다