#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <math.h> 

// Acceleration Values = a.acceleration.y   ,  a.acceleration.x   , a.acceleratation.z
// gyro Values = 

Adafruit_MPU6050 mpu;

float ACCpitch;
float ACCroll;
float zAccelerationOld = 0;
float yAccelerationOld = 0;
float xAccelerationOld= 0;
float zAccelerationSmoothed;
float yAccelerationSmoothed;
float xAccelerationSmoothed;

float GYRpitch = 0;
float GYRroll= 0;
float dt; 
unsigned long oldMillis; 


void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("Adafruit MPU6050 test!");

  // Try to initialize
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");

  mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
  mpu.setGyroRange(MPU6050_RANGE_1000_DEG);
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

 oldMillis = millis(); 
}

void loop() {

  //Get new sensor events with the readings 
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  //Low Pass Filter
  zAccelerationSmoothed = zAccelerationOld * .75 + a.acceleration.z * .25;
  yAccelerationSmoothed = yAccelerationOld * .75 + a.acceleration.y * .25;
  xAccelerationSmoothed = xAccelerationOld * .75 + a.acceleration.x * .25;

  ACCpitch = atan2((xAccelerationSmoothed/9.81),(zAccelerationSmoothed/9.81))/2/3.1459*360;
  ACCroll = atan2((yAccelerationSmoothed/9.81),(zAccelerationSmoothed/9.81))/2/3.1459*360;
 
  dt = (millis() - oldMillis) / 1000.;
  oldMillis = millis();

  GYRpitch = GYRpitch + g.gyro.y*dt;
  GYRroll = GYRroll + g.gyro.x*dt;

  // Print out the values 
  Serial.print(GYRpitch);
  Serial.print("  , ");
  Serial.println(GYRroll);

  yAccelerationOld = yAccelerationSmoothed;
  yAccelerationOld = yAccelerationSmoothed;
  xAccelerationOld = xAccelerationSmoothed;


}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
imu1:INT
imu1:AD0
imu1:XCL
imu1:XDA
imu1:SDA
imu1:SCL
imu1:GND
imu1:VCC