

The MPR121 Breakout V12 is a capacitive touch sensor module designed for detecting touch inputs. It is based on the MPR121 IC, which supports up to 12 touch-sensitive electrodes. This module is widely used in interactive projects, touch-based user interfaces, and other applications requiring touch detection. Its compact design and I2C communication interface make it easy to integrate into a variety of electronic systems.








The following are the key technical details of the MPR121 Breakout V12:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V to 3.6V (typically powered at 3.3V) |
| Communication Interface | I2C (up to 400kHz) |
| Number of Touch Inputs | 12 electrodes |
| Maximum Current Consumption | 29 µA (typical, in normal operation) |
| Electrode Sensitivity | Configurable via registers |
| Operating Temperature | -40°C to +85°C |
| Dimensions | ~25mm x 25mm |
The MPR121 Breakout V12 module typically has the following pinout:
| Pin Name | Description |
|---|---|
| VCC | Power supply input (3.3V recommended) |
| GND | Ground connection |
| SDA | I2C data line (connect to microcontroller's SDA pin) |
| SCL | I2C clock line (connect to microcontroller's SCL pin) |
| IRQ | Interrupt output (active low, indicates a touch event) |
| ADDR | I2C address selection pin (connect to GND for default address 0x5A) |
| ELE0-ELE11 | Electrode connections for touch inputs (up to 12 touch points) |
0x5A. You can change it by connecting the ADDR pin to different voltage levels (refer to the MPR121 datasheet for address mapping).Below is an example of how to use the MPR121 Breakout V12 with an Arduino UNO:
#include <Wire.h>
#include <Adafruit_MPR121.h>
// Create an MPR121 object
Adafruit_MPR121 cap = Adafruit_MPR121();
// Check if the MPR121 is connected
void setup() {
Serial.begin(9600);
Serial.println("MPR121 Touch Sensor Test");
if (!cap.begin(0x5A)) { // Default I2C address is 0x5A
Serial.println("MPR121 not found. Check wiring!");
while (1);
}
Serial.println("MPR121 found!");
}
void loop() {
// Read touch status
uint16_t touched = cap.touched();
for (uint8_t i = 0; i < 12; i++) {
// Check if electrode i is touched
if (touched & (1 << i)) {
Serial.print("Electrode ");
Serial.print(i);
Serial.println(" is touched.");
}
}
delay(100); // Small delay to avoid flooding the serial monitor
}
Adafruit_MPR121 library is used for easy communication with the sensor. Install it via the Arduino Library Manager.cap.begin(0x5A) function initializes the sensor with the default I2C address.cap.touched() function returns a 12-bit value, where each bit corresponds to the touch status of an electrode.MPR121 Not Detected
Touch Inputs Not Responding
Erratic Behavior
Multiple Electrodes Triggering Simultaneously
Q: Can I use the MPR121 with a 5V microcontroller?
A: Yes, but you must use a level shifter for the I2C lines, as the MPR121 operates at 3.3V logic levels.
Q: How do I increase the sensitivity of the touch inputs?
A: Sensitivity can be adjusted by modifying the electrode configuration registers in the MPR121. Refer to the datasheet for details.
Q: Can I use fewer than 12 electrodes?
A: Yes, you can use as many or as few electrodes as needed. Unused electrodes should be left unconnected.
Q: Is the MPR121 suitable for outdoor use?
A: The MPR121 is not weatherproof. If used outdoors, ensure proper protection against moisture and environmental factors.
This concludes the documentation for the MPR121 Breakout V12 - Touch Sensor.