ESP32 - 키패드 1x4 | ESP32 - Keypad 1x4
이 가이드에서는 ESP32와 1x4 키패드를 사용하는 방버을 알아보겠습니다. 다룰 내용은:
- ESP32에 1x4 키패드를 연결하는 방법.
- 1x4 키패드에서 눌린 키를 감지하기 위해 ESP32를 프로그래밍하는 방법.
Hardware Preparation
1 | × | ESP-WROOM-32 Dev Module | 쿠팡 | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Keypad 1x4 | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for ESP32 | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for ESP32 | 쿠팡 | Amazon |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
1x4 키패드에 관하여
1x4 키패드는 한 줄로 늘어선 네 개의 멤브레인 버튼이 있습니다. 이는 사용자가 데이터를 입력하거나, 비밀번호를 입력하거나, 메뉴를 탐색하거나, 장치를 제어하는 데 자주 사용됩니다.
핀배치
1x4 키패드에는 5개의 핀이 있습니다. 이 핀들의 배치는 키 라벨의 순서와 일치하지 않습니다.
- 핀 1: 키 2와 연결
- 핀 2: 키 1과 연결
- 핀 3: 키 4와 연결
- 핀 4: 키 3과 연결
- 핀 5: 모든 키와 연결되며 공통 핀입니다.
image source: diyables.io
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.
ESP32 코드
1x4 키패드의 각 키는 버튼처럼 작동합니다. 이를 통해 digitalRead() 함수를 사용하여 각 키의 상태를 확인할 수 있습니다. 그러나 다른 버튼과 마찬가지로 이 키들은 '바운스'될 수 있습니다. 이는 단일 누름이 여러 번 눌린 것으로 감지될 수 있다는 의미입니다. 이를 해결하기 위해 각 키를 디바운스해야 합니다. 다른 코드 부분을 방해하지 않고 네 개의 키를 디바운스하는 것은 어려울 수 있습니다. 다행히도 ezButton 라이브러리를 사용하면 이 작업이 더 쉬워집니다.
#include <ezButton.h>
#define KEY_NUM 4 // the number of keys
#define PIN_KEY_1 26 // The ESP32 pin GPIO26 connected to the key 1
#define PIN_KEY_2 25 // The ESP32 pin GPIO25 connected to the key 2
#define PIN_KEY_3 14 // The ESP32 pin GPIO14 connected to the key 3
#define PIN_KEY_4 27 // The ESP32 pin GPIO27 connected to the key 4
ezButton keypad_1x4[] = {
ezButton(PIN_KEY_1),
ezButton(PIN_KEY_2),
ezButton(PIN_KEY_3),
ezButton(PIN_KEY_4)
};
void setup() {
Serial.begin(9600);
for (byte i = 0; i < KEY_NUM; i++) {
keypad_1x4[i].setDebounceTime(100); // set debounce time to 100 milliseconds
}
}
void loop() {
int key = getKeyPressed();
if (key) {
Serial.print("The key ");
Serial.print(key);
Serial.println(" is pressed");
}
}
int getKeyPressed() {
for (byte i = 0; i < KEY_NUM; i++)
keypad_1x4[i].loop(); // MUST call the loop() function first
for (byte i = 0; i < KEY_NUM; i++) {
// get key state after debounce
int key_state = keypad_1x4[i].getState(); // the state after debounce
if (keypad_1x4[i].isPressed())
return (i + 1);
}
return 0;
}
Detailed Instructions
- ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정 방법을 확인하세요.
- ESP32를 1x4 키패드에 연결하세요.
- ESP32 보드를 USB 케이블을 사용하여 PC에 연결하세요.
- PC에서 Arduino IDE를 엽니다.
- 올바른 ESP32 보드(예: ESP32 Dev Module)와 COM 포트를 선택하세요.
- Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘으로 이동하세요.
- “ezButton”을 검색하고 ArduinoGetStarted.com의 버튼 라이브러리를 찾으세요.
- Install 버튼을 클릭하여 ezButton 라이브러리를 설치하세요.
- 코드를 복사하여 아두이노 IDE에서 엽니다
- 아두이노 IDE에서 Upload 버튼을 클릭하여 코드를 ESP32로 전송합니다
- 시리얼 모니터를 엽니다
- 1x4 키패드의 각 키를 누릅니다
- 시리얼 모니터에서 결과를 확인합니다
COM6
1
2
3
4
Autoscroll
Clear output
9600 baud
Newline