4x3 membrane keypad (12 keys) with ESP32
Supply 3.3 V
Bus GPIO
Pins and ESP32 wiring
| Pin | Role | ESP32 pin | Notes |
|---|---|---|---|
| R1 | Output (the part drives it) | D25 | Row 1. Rows are read with INPUT_PULLUP. Adafruit 3x4 keypads use another pin order |
| R2 | Output (the part drives it) | D26 | Row 2 |
| R3 | Output (the part drives it) | D27 | Row 3 |
| R4 | Output (the part drives it) | D32 | Row 4 |
| C1 | Input (the ESP32 drives it) | D33 | Column 1. Columns are driven LOW one at a time |
| C2 | Input (the ESP32 drives it) | D23 | Column 2 |
| C3 | Input (the ESP32 drives it) | D19 | Column 3 |
Suggested wiring for the 30-pin ESP32 DevKit, avoiding flash, input-only and strapping pins. BoardPilot checks it for you as you wire.
Sources
- Arduino Keypad library (Mark Stanley, Alexander Brevig), Row/column scanning; pins 1 to 7 = R1-R4, C1-C3 on common membrane keypads
Try it in 3D in BoardPilot
Related parts
1x4 membrane keypad (4 keys)433 MHz receiver (XY-MK-5V)4x4 membrane keypad5-way navigation button module74HC165 input shift registerArcade button 30 mm with LED
Part data: CC BY 4.0, free to reuse with credit to BoardPilot.