2017-01-31 5 views
0

J'essaie de faire une souris basée sur un accéléromètre. J'utilise un MPU-6050 pour mon accéléromètre. J'ai connecté les ports suivants:MPU-6050 ne fonctionne pas

  • CCV - 5V
  • GND - GND
  • SCL - A4
  • SDA - A5
  • INT - 2

Voici mon code:

// MPU-6050 Short Example Sketch 
// By Arduino User JohnChi 
// August 17, 2014 
// Public Domain 
#include<Wire.h> 
const int MPU_addr=0x68; // I2C address of the MPU-6050 
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; 
String movement = " "; 
String movementup = " "; 
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); 
} 
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 
    AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)  
    AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L) 
    AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L) 
    Tmp=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L) 
    GyX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L) 
    GyY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L) 
    GyZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L) 



    if(AcX < -4000 && AcY < 4000 && AcY > -4000){ 
    Serial.println("8");//D 
    }else{ 
    Serial.println(""); 
    } 
    if(AcX > 4000 && AcY < 4000 && AcY > -4000){ 
    Serial.println("7");//A 
    }else{ 
    Serial.println(""); 
    } 
    if(AcY < -3000 && AcX < 3000 && AcX > -3000){ 
    Serial.println("6");//W 
    }else{ 
    Serial.println(""); 
    } 
    if(AcY >4000 && AcX < 4000 && AcX > -4000){ 
    Serial.println("5");//S 
    }else{ 
    Serial.println(""); 
    } 
    if(AcY > 4000 && AcX > 4000){ 
    Serial.println("4");//SA 
    }else{ 
    Serial.println(""); 
    } 
    if(AcY < -4000 && AcX < -4000){ 
    Serial.println("3");//WD 
    }else{ 
    Serial.println(""); 
    } 
    if(AcY < -4000 && AcX > 4000){ 
    Serial.println("2");//WA 
    }else{ 
    Serial.println(""); 
    } 
    if(AcY > 4000 && AcX < -4000){ 
    Serial.println("1");//sd 
    }else{ 
    Serial.println(""); 
    } 

    // Serial.print(movement); 
//Serial.println("|| AcX ="),Serial.print (AcX); 
//Serial.println("|| AcY ="),Serial.print (AcY); 


// Serial.print(movementup); 


    delay(333); 


    } 

Mais chaque fois que je tente et lancer le programme la sortie se présente comme suit:

AcX AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
| Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36.53 | GyX = -1 | GyY = -1 | GyZ = -1 
AcX = -1 | AcY = -1 | AcZ = -1 | Tmp = 36. 

J'ai essayé d'utiliser le I2C vérificateur, il m'a donné ceci:

I2C Scanner 
Scanning... 
No I2C devices found 

Si quelqu'un a des réponses s'il vous plaît commenter!

+0

Quels Arduino utilisez-vous? –

Répondre

2

Si vous utilisez un Arduino Uno, vous avez échangé des fils SDA et SCL.

Selon ce site: https://www.arduino.cc/en/Reference/Wire

Conseil I2C/broches TWI

Uno, Ethernet A4 (SDA), A5 (SCL)

Mega2560 20 (SDA), 21 (SCL)

Leonardo 2 (SDA), 3 (SCL)

Due 20 (SDA), 21 (SCL), APS1, SCL1

Assurez-vous d'utiliser les broches de droite

+0

Porcinet, Merci. Vous m'avez aidé à résoudre un problème qui m'a presque rendu fou. –