

The Module Converter Keypad Matrix 4x4 to I2C is a versatile electronic component designed to simplify the process of interfacing a 4x4 matrix keypad with microcontrollers. By converting the keypad's row-column signals into I2C communication, this module reduces the number of GPIO pins required and streamlines the process of reading key presses. It is particularly useful in applications where GPIO pins are limited or where multiple devices need to communicate over the I2C bus.








Below are the key technical details of the module:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V - 5V |
| Communication Protocol | I2C |
| Default I2C Address | 0x20 (modifiable via jumpers) |
| Keypad Compatibility | 4x4 matrix keypad |
| Dimensions | 30mm x 25mm x 10mm |
| Operating Temperature | -20°C to 70°C |
The module has the following pinout:
| Pin Name | Description |
|---|---|
| VCC | Power supply input (3.3V - 5V) |
| GND | Ground connection |
| SDA | I2C data line |
| SCL | I2C clock line |
| ADDR | Optional pin to modify the I2C address (connect to GND or VCC for address change) |
| ROW1-ROW4 | Connections for the keypad's row pins |
| COL1-COL4 | Connections for the keypad's column pins |
ROW1-ROW4 and COL1-COL4 pins. Ensure the connections match the keypad's pinout.VCC pin to a 3.3V or 5V power source and the GND pin to ground.SDA and SCL pins to the corresponding I2C pins on your microcontroller. For an Arduino UNO, connect SDA to A4 and SCL to A5.ADDR pin to GND or VCC.SDA/SCL and VCC.Below is an example Arduino sketch to read key presses from the module:
#include <Wire.h> // Include the Wire library for I2C communication
#define I2C_ADDRESS 0x20 // Default I2C address of the module
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
Serial.println("4x4 Keypad I2C Module Test");
}
void loop() {
Wire.requestFrom(I2C_ADDRESS, 1); // Request 1 byte from the module
if (Wire.available()) {
byte key = Wire.read(); // Read the key press data
if (key != 0) { // Check if a key is pressed
Serial.print("Key Pressed: ");
Serial.println(key, HEX); // Print the key value in hexadecimal
}
}
delay(100); // Small delay to avoid flooding the I2C bus
}
Wire.begin() function initializes the I2C communication.Wire.requestFrom() function requests data from the module.Wire.read() function retrieves the key press data. Each key is represented by a unique hexadecimal value.No Key Press Detected
ROW and COL pins.I2C Communication Failure
SDA/SCL and VCC.Multiple Devices on the Same I2C Address
ADDR pin.Unstable or Noisy Keypad Input
Q: Can I use this module with a 3x4 keypad?
A: Yes, but only the first three columns and four rows will be functional. Leave the unused column pin unconnected.
Q: How do I change the I2C address?
A: Connect the ADDR pin to GND or VCC to select a different address. Refer to the module's datasheet for the exact address mapping.
Q: What happens if I press multiple keys simultaneously?
A: The module may not correctly detect multiple simultaneous key presses due to the nature of matrix keypads. Avoid pressing multiple keys at once.
Q: Is this module compatible with Raspberry Pi?
A: Yes, the module can be used with Raspberry Pi via its I2C interface. Ensure the I2C bus is enabled in the Raspberry Pi configuration.
This concludes the documentation for the Module Converter Keypad Matrix 4x4 to I2C.