

The Adafruit DRV2605L Haptic Motor Controller (Part ID: 2305) is a compact and versatile module designed to control vibration motors with precision. It enables the creation of tactile feedback in devices, making it ideal for applications requiring haptic feedback, such as wearables, gaming controllers, and user interfaces. The controller supports a wide range of haptic effects and features an I²C interface for easy communication. Additionally, the inclusion of STEMMA QT connectors simplifies integration into projects, especially for prototyping and development.








The following table outlines the key technical details of the Adafruit DRV2605L Haptic Motor Controller:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.0V to 5.5V |
| Communication Interface | I²C |
| Supported Motors | ERM (Eccentric Rotating Mass) and LRA (Linear Resonant Actuator) |
| Haptic Effects Library | Built-in library with over 100 effects |
| Current Consumption | ~3mA (active), ~10µA (standby) |
| Dimensions | 25.5mm x 17.8mm x 4.6mm |
| STEMMA QT Compatibility | Yes (plug-and-play I²C connectivity) |
The DRV2605L module has the following pin layout:
| Pin | Name | Description |
|---|---|---|
| VIN | Power Input | Connect to 3.0V-5.5V power supply. |
| GND | Ground | Connect to the ground of the circuit. |
| SDA | I²C Data | Data line for I²C communication. |
| SCL | I²C Clock | Clock line for I²C communication. |
| IN/TRIG | Trigger Pin | Optional input for external triggering of haptic effects. |
| ACT | Active Pin | Outputs a signal when the motor is active (can be used for monitoring). |
Below is an example of how to use the DRV2605L with an Arduino UNO to play a haptic effect:
#include <Wire.h>
#include <Adafruit_DRV2605.h>
// Create an instance of the DRV2605L library
Adafruit_DRV2605 drv;
void setup() {
Serial.begin(9600); // Initialize serial communication for debugging
Serial.println("Initializing DRV2605L...");
// Initialize the DRV2605L
if (!drv.begin()) {
Serial.println("Failed to find DRV2605L. Check connections.");
while (1); // Halt execution if initialization fails
}
Serial.println("DRV2605L initialized successfully!");
// Select the ERM motor mode (default)
drv.selectLibrary(1);
// Set the haptic effect to play (e.g., effect #1)
drv.setMode(DRV2605_MODE_INTTRIG); // Internal trigger mode
drv.setWaveform(0, 1); // Play effect #1
drv.setWaveform(1, 0); // End of sequence
}
void loop() {
Serial.println("Playing haptic effect...");
drv.go(); // Start the haptic effect
delay(1000); // Wait for 1 second
}
Module Not Detected on I²C Bus
Motor Not Vibrating
Haptic Effects Not Playing
Excessive Heat
Q: Can I use multiple DRV2605L modules on the same I²C bus?
A: Yes, but you will need to use an I²C multiplexer or modify the module to change its I²C address, as the DRV2605L has a fixed address.
Q: Does the DRV2605L support custom haptic effects?
A: Yes, you can program custom waveforms by directly writing to the waveform registers.
Q: Is the DRV2605L compatible with Raspberry Pi?
A: Yes, the module can be used with Raspberry Pi via the I²C interface, but you may need to use a level shifter if operating at 3.3V logic.
Q: What is the maximum motor current supported?
A: The DRV2605L can drive motors with a current requirement of up to 250mA.
By following this documentation, you can effectively integrate the Adafruit DRV2605L Haptic Motor Controller into your projects and create engaging tactile feedback systems.