const int ledBluePin = 5; const int ledRedPin = 6; const int ledGreenPin = 4; #include const int MPU_addr=0x68; // I2C address of the MPU-6050 float accx, accy, accz; uint8_t state = 0; uint8_t prev_state = 0; void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); // PWR_MGMT_1 register Wire.write(0); // set to zero (wakes up the MPU-6050) Wire.endTransmission(true); Serial.begin(9600); pinMode(ledRedPin, OUTPUT); pinMode(ledGreenPin, OUTPUT); pinMode(ledBluePin, OUTPUT); analogWrite(ledRedPin, 255); analogWrite(ledGreenPin, 255); analogWrite(ledBluePin, 255); } void loop(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers accx=(Wire.read()<<8|Wire.read()) / 16384.0; // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L) accy=(Wire.read()<<8|Wire.read()) / 16384.0; // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L) accz=(Wire.read()<<8|Wire.read()) / 16384.0; // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L) if (accx < 1.0 && accy < 1.0) { // red = z axis downwards analogWrite(ledRedPin, 0); analogWrite(ledGreenPin, 255); analogWrite(ledBluePin, 255); } else if (accz < 1.0 && accy < 1.0) { // green = x axis downwards analogWrite(ledRedPin, 255); analogWrite(ledGreenPin, 0); analogWrite(ledBluePin, 255); } else if (accx < 1.0 && accz < 1.0) { // blue = y axis downwards analogWrite(ledRedPin, 255); analogWrite(ledGreenPin, 255); analogWrite(ledBluePin, 0); } Serial.print("AcX = "); Serial.print(accx); Serial.print(" | AcY = "); Serial.print(accy); Serial.print(" | AcZ = "); Serial.println(accz); }