Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use Adafruit DRV2605L: Examples, Pinouts, and Specs

Image of Adafruit DRV2605L
Cirkit Designer LogoDesign with Adafruit DRV2605L in Cirkit Designer

Introduction

The Adafruit DRV2605L is a versatile haptic motor controller designed to provide tactile feedback in electronic projects. This controller is capable of driving a wide range of haptic devices including Eccentric Rotating Mass (ERM) motors and Linear Resonant Actuators (LRAs). It is commonly used in wearable devices, gaming controllers, and touch-enabled devices to enhance the user experience through vibration feedback.

Explore Projects Built with Adafruit DRV2605L

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Arduino Mega 2560-Based Bluetooth-Controlled Robotic Car with MPU6050 and L298N Motor Driver
Image of selfbalancing: A project utilizing Adafruit DRV2605L in a practical application
This circuit is a motor control system using an Arduino Mega 2560, an L298N motor driver, and an MPU6050 accelerometer and gyroscope. The Arduino controls two DC motors via the L298N driver and communicates with the MPU6050 for motion sensing and the HC-05 Bluetooth module for wireless communication. Power is supplied by a 3S LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Arduino UNO Smart Light with NeoPixel and ADXL345
Image of Cubagick: A project utilizing Adafruit DRV2605L in a practical application
This circuit is a battery-powered system featuring an Arduino UNO that controls an Adafruit NeoPixel Stick and interfaces with an ADXL345 accelerometer and an ILI9341 TFT display. The TP4056 module charges a 18650 battery, which powers the system through a DC-DC converter. The Arduino code drives the NeoPixel Stick to display a red light sequence.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino-Controlled BLDC Motor with MPU-6050 Feedback and L298N Driver
Image of reactionwheel: A project utilizing Adafruit DRV2605L in a practical application
This circuit features an Arduino UNO microcontroller interfaced with an L298N DC motor driver to control a BLDC motor. The MPU-6050 sensor is connected to the Arduino via I2C (using SDA and SCL lines) for motion tracking. Power is supplied by a lipo battery, with the Arduino distributing 5V to the motor driver and sensor.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino UNO-Based Dual Stepper Motor Controller with Gesture Sensing and RTC Display
Image of Arduino UNO-Based Dual Stepper Motor Controller with Gesture Sensing and RTC Display: A project utilizing Adafruit DRV2605L in a practical application
This circuit is an Arduino UNO-based dual stepper motor controller that uses ULN2003A driver boards to control two 28BYJ-48 stepper motors. It features an APDS-9960 RGB and gesture sensor for gesture-based control, a DS1307 RTC module to display time on a 16x2 I2C LCD, and includes a green LED and two pushbuttons for additional control and status indication.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with Adafruit DRV2605L

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of selfbalancing: A project utilizing Adafruit DRV2605L in a practical application
Arduino Mega 2560-Based Bluetooth-Controlled Robotic Car with MPU6050 and L298N Motor Driver
This circuit is a motor control system using an Arduino Mega 2560, an L298N motor driver, and an MPU6050 accelerometer and gyroscope. The Arduino controls two DC motors via the L298N driver and communicates with the MPU6050 for motion sensing and the HC-05 Bluetooth module for wireless communication. Power is supplied by a 3S LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Cubagick: A project utilizing Adafruit DRV2605L in a practical application
Battery-Powered Arduino UNO Smart Light with NeoPixel and ADXL345
This circuit is a battery-powered system featuring an Arduino UNO that controls an Adafruit NeoPixel Stick and interfaces with an ADXL345 accelerometer and an ILI9341 TFT display. The TP4056 module charges a 18650 battery, which powers the system through a DC-DC converter. The Arduino code drives the NeoPixel Stick to display a red light sequence.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of reactionwheel: A project utilizing Adafruit DRV2605L in a practical application
Arduino-Controlled BLDC Motor with MPU-6050 Feedback and L298N Driver
This circuit features an Arduino UNO microcontroller interfaced with an L298N DC motor driver to control a BLDC motor. The MPU-6050 sensor is connected to the Arduino via I2C (using SDA and SCL lines) for motion tracking. Power is supplied by a lipo battery, with the Arduino distributing 5V to the motor driver and sensor.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Arduino UNO-Based Dual Stepper Motor Controller with Gesture Sensing and RTC Display: A project utilizing Adafruit DRV2605L in a practical application
Arduino UNO-Based Dual Stepper Motor Controller with Gesture Sensing and RTC Display
This circuit is an Arduino UNO-based dual stepper motor controller that uses ULN2003A driver boards to control two 28BYJ-48 stepper motors. It features an APDS-9960 RGB and gesture sensor for gesture-based control, a DS1307 RTC module to display time on a 16x2 I2C LCD, and includes a green LED and two pushbuttons for additional control and status indication.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Wearable devices for notifications
  • Gaming controllers for immersive feedback
  • Touchscreen interfaces for virtual button presses
  • Mobile phones and tablets for haptic feedback
  • Robotics for sensory feedback mechanisms

Technical Specifications

Key Technical Details

  • Operating Voltage: 2.0V - 5.2V
  • Output Drive Capability: LRA and ERM
  • I2C Address: 0x5A (default)
  • Built-in waveform library with over 100 haptics effects
  • Real-time playback mode via I2C for customized waveforms

Pin Configuration and Descriptions

Pin Number Name Description
1 SCL I2C clock line
2 SDA I2C data line
3 GND Ground connection
4 VDD Power supply (2.0V - 5.2V)
5 LRA/ERM Output to the haptic motor
6 IN/TRIG Trigger input for activating pre-defined waveforms
7 EN Enable pin for the driver (active high)

Usage Instructions

How to Use the Component in a Circuit

  1. Connect the VDD pin to your power supply (2.0V - 5.2V).
  2. Connect the GND pin to the ground of your power supply.
  3. Connect the SCL and SDA pins to the I2C clock and data lines on your microcontroller.
  4. Connect the LRA/ERM pin to your haptic motor.
  5. Optionally, connect the IN/TRIG pin to a digital output on your microcontroller if you want to trigger waveforms externally.
  6. Optionally, connect the EN pin to a digital output on your microcontroller to enable or disable the driver.

Important Considerations and Best Practices

  • Ensure that the power supply voltage is within the specified range to prevent damage.
  • Use pull-up resistors on the I2C lines if they are not included in your microcontroller board.
  • When using an LRA, calibrate the device for optimal performance.
  • Avoid running the haptic motor continuously at high voltages to prevent overheating and potential damage.

Example Code for Arduino UNO

#include <Wire.h>
#include <Adafruit_DRV2605.h>

Adafruit_DRV2605 drv;

void setup() {
  Serial.begin(9600);
  Serial.println("DRV2605 test");

  drv.begin();

  drv.selectLibrary(1); // Select a haptic motor library.

  drv.setMode(DRV2605_MODE_INTTRIG); // Set mode to internal trigger.
}

void loop() {
  Serial.println("Playing effect #1");
  drv.setWaveform(0, 1); // Set waveform sequence.
  drv.setWaveform(1, 0); // End waveform sequence with a zero.

  drv.go(); // Play the effect!

  delay(1000); // Wait a bit between haptic feedback.
}

Troubleshooting and FAQs

Common Issues Users Might Face

  • Motor not responding: Ensure all connections are secure and the motor is compatible with the DRV2605L.
  • Weak or no vibration: Check the power supply and ensure it's within the specified voltage range.
  • I2C communication errors: Verify the pull-up resistors are installed and the I2C address is correct.

Solutions and Tips for Troubleshooting

  • Double-check wiring against the pin configuration table.
  • Use a multimeter to verify the voltage at the VDD pin.
  • Ensure the I2C lines are not shared with other devices that might cause conflicts.
  • If using the IN/TRIG pin, ensure it's toggled correctly to trigger the waveform.

FAQs

Q: Can the DRV2605L drive multiple motors simultaneously? A: No, it is designed to drive a single haptic motor at a time.

Q: Is it necessary to use an external trigger? A: No, you can use the I2C interface to trigger waveforms internally.

Q: How do I change the I2C address? A: The I2C address is fixed and cannot be changed.

Q: Can the DRV2605L be used with motors that require a different voltage? A: The DRV2605L can only be used within its specified voltage range. Motors requiring voltages outside this range are not compatible.

For further assistance, consult the Adafruit DRV2605L datasheet and the Adafruit support forums.