How can I get the Adafruit_MPU6050 library to work with the IRremote library?

I am working on a project where I send an IR signal when the accelerometer detects a tilt. I can use the Adafruit_MPU6050 library fine on its own, but when I just include the IRremote library it no longer is able to initialize (using mpu.begin()).

I have also tried using the Wire.h library instead with the IRRemote library, but the accelerometer still cannot initialize. Does anyone have any suggestions for how to resolve this (or does anyone knows what the cause is)?

My accelerometer is a HiLetgo GY-521 MPU-6050. My IR receiver and transmitter are Gikfun Digital EK8477.

You don't need a library to measure tilt with the MPU-6050 (other than Wire).

This simple example program demonstrates how:

// minimal MPU-6050 tilt and roll (sjr). Works with MPU-9250 too.
// works perfectly with GY-521, pitch and roll signs agree with arrows on sensor module 7/2019
//
// Tested with 3.3V eBay Pro Mini with no external pullups on I2C bus (worked with internal pullups)
// Add 4.7K pullup resistors to 3.3V if required. A4 = SDA, A5 = SCL

#include<Wire.h>
const int MPU_addr1 = 0x68;
float xa, ya, za, roll, pitch;

void setup() {

  Wire.begin();                                      //begin the wire communication
  Wire.beginTransmission(MPU_addr1);                 //begin, send the slave adress (in this case 68)
  Wire.write(0x6B);                                  //make the reset (place a 0 into the 6B register)
  Wire.write(0);
  Wire.endTransmission(true);                        //end the transmission
  Serial.begin(9600);
}

void loop() {

  Wire.beginTransmission(MPU_addr1);
  Wire.write(0x3B);  //send starting register address, accelerometer high byte
  Wire.endTransmission(false); //restart for read
  Wire.requestFrom(MPU_addr1, 6); //get six bytes accelerometer data
  int t = Wire.read();
  xa = (t << 8) | Wire.read();
  t = Wire.read();
  ya = (t << 8) | Wire.read();
  t = Wire.read();
  za = (t << 8) | Wire.read();
// formula from https://wiki.dfrobot.com/How_to_Use_a_Three-Axis_Accelerometer_for_Tilt_Sensing
  roll = atan2(ya , za) * 180.0 / PI;
  pitch = atan2(-xa , sqrt(ya * ya + za * za)) * 180.0 / PI; //account for roll already applied

  Serial.print("roll = ");
  Serial.print(roll,1);
  Serial.print(", pitch = ");
  Serial.println(pitch,1);
  delay(400);
}

Thank you for the reply and the example sketch! Unfortunately, when I include the IRRemote header, this sketch doesn't seem to output anything either.

Post the code, using code tags.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.