2017-01-31 14 views
0

저는 가속도계 기반의 마우스를 만들려고합니다. 가속도계에 MPU-6050을 사용하고 있습니다. 나는 포트에게 다음과 같은 연결 한 - 5V MPU-6050이 작동하지 않습니다.

  • GND - GND
  • SCL - A4
  • SDA -

    • VCC를 A5를
    • INT - 여기에 2

    은 내 코드 :

    // 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); 
    
    
        } 
    

    내가 프로그램을 시도하고 실행 할 때마다 그러나 출력은 다음과 같이 간다 : 사람이 어떤 답이있는 경우

    I2C Scanner 
    Scanning... 
    No I2C devices found 
    

    언급하십시오 : 그것은 나에게이 준 검사

    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. 
    

    나는 I2C를 사용하는 것을 시도했다!

  • +0

    는 아두 이노를 사용하는 올바른 핀을 사용하십시오? –

    답변

    2

    Arduino Uno를 사용하는 경우 SDA 및 SCL 전선을 서로 바꿔야합니다. 이 사이트에 따르면

    : https://www.arduino.cc/en/Reference/Wire

    보드 I2C/TWI 핀

    우노, 이더넷 A4 (SDA), A5 (SCL)

    Mega2560 20 (SDA) 21 (SCL)

    레오나르도 2 (SDA), 3 (SCL)

    인해 20 (SDA), 21 (SCL), SDA1, SCL1

    당신이

    +0

    돼지, 고마워요. 나를 미치게 만들었던 문제를 해결할 수있었습니다. –