

The MPR121 Breakout Board by Adafruit is a compact and versatile module designed to simplify the integration of capacitive touch sensing into your projects. It is based on the MPR121 capacitive touch sensor IC, which supports up to 12 touch-sensitive electrodes. This breakout board provides easy access to the MPR121's pins and features, making it ideal for prototyping and development.








Below are the key technical details and pin configuration for the MPR121 Breakout Board:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V to 3.6V (logic level) |
| Input Voltage (VCC pin) | 3.3V to 5V |
| Communication Interface | I2C |
| Number of Touch Electrodes | 12 |
| I2C Address (Default) | 0x5A (configurable to 0x5B, 0x5C, or 0x5D) |
| Maximum Current Consumption | ~29 µA (in normal operation) |
| Dimensions | 25mm x 18mm |
The MPR121 Breakout Board has the following pin layout:
| Pin Name | Description |
|---|---|
| GND | Ground connection |
| VCC | Power supply input (3.3V to 5V) |
| SDA | I2C data line |
| SCL | I2C clock line |
| IRQ | Interrupt pin (active low, signals touch events) |
| ADDR | Address selection pin (used to configure I2C address) |
| ELE0-ELE11 | Touch electrode pins (connect to conductive materials for touch detection) |
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 (e.g., Arduino UNO).ADDR pin to GND, VCC, SDA, or SCL to set the address to 0x5A, 0x5B, 0x5C, or 0x5D, respectively.ELE0 to ELE11 pins for touch sensing.IRQ pin to detect touch events without continuously polling the sensor.SDA and SCL lines if your microcontroller does not have internal pull-ups.Below is an example of how to use the MPR121 Breakout Board 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);
while (!Serial); // Wait for Serial Monitor to open
Serial.println("MPR121 Capacitive 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 for stability
}
MPR121 Not Detected
SDA, SCL, VCC, and GND. Ensure the I2C address in the code matches the hardware configuration.Touch Events Not Detected
ELE pins. Minimize the length of electrode wires and avoid noisy environments.Unstable or False Touch Events
Can I use this board with a 5V microcontroller? Yes, the breakout board includes level-shifting circuitry, allowing it to work with both 3.3V and 5V logic levels.
How do I increase touch sensitivity? You can adjust the touch threshold settings in the MPR121 library. Refer to the library documentation for details.
Can I use fewer than 12 electrodes? Yes, simply leave the unused electrode pins unconnected.
What is the maximum length for electrode wires? For best performance, keep electrode wires as short as possible (preferably under 12 inches). Longer wires may require additional shielding or filtering.
This concludes the documentation for the MPR121 Breakout Board.