werte vom MPU6050 gy521 auslesen

hey,
Ich habe einen MPU6050 (gy521) an einen arduino leonardo angeschlossen
Mein Problem ist, dass ich als Werte für sämtliche achsen fast immer nur -1 erhalte
Würde mich über jede Unterstützung freuen, da ich mich mit dem arduino erst seit kurzem beschäftige =)
hatte den code davor mit einem arduino UNO genutzt wo es einwandfrei funktionierte. Habe aber leider keine Ahnung was da bei der Programmierung unterschiedlich ist. :confused:

angeschlossen habe ich
vcc-vcc
GND-GND
SCL-port3
SDA-port2

muss ich vielleicht noch scl und sda gegen + schalten?

oder passt was an der folgenden Programmierung nicht

#include <Wire.h>

#define sensor_address 0x68

void setup()
{
  // 9600 Baut reichen zum Betrachten aus.
  Serial.begin(9600);
  Wire.begin();

  delay(1000);
  
  // Powermanagement aufrufen
  // Sensor schlafen und Reset, Clock wird zunächst von Gyro-Achse Z verwendet  
  Serial.println("Powermanagement aufrufen - Reset");
  SetConfiguration(0x6B, 0x80);
  
  // Kurz warten
  delay(500);
  
  // Powermanagement aufrufen
  // Sleep beenden und Clock von Gyroskopeachse X verwenden
  Serial.println("Powermanagement aufrufen - Clock festlegen");
  SetConfiguration(0x6B, 0x03);
  
  delay(500);
  
  // Konfigruation  aufrufen
  // Default => Acc=260Hz, Delay=0ms, Gyro=256Hz, Delay=0.98ms, Fs=8kHz
  Serial.println("Konfiguration aufrufen - Default Acc = 260Hz, Delay = 0ms");
  SetConfiguration(0x1A, 0x00);
  
  // Leerzeichen
  Serial.println("");
}

void loop()
{
  byte result[14];
  // Anfangs Adresse von Beschleunigungssensorachse X
  result[0] = 0x3B;
  
   // Aufruf des MPU6050 Sensor
  Wire.beginTransmission(sensor_address);
  // Anfangsadresse verwenden.
  Wire.write(result[0]);
  Wire.endTransmission();
  // 14 Bytes kommen als Antwort
  Wire.requestFrom(sensor_address, 14);
  // Bytes im Array ablegen
  for(int i = 0; i < 14; i++)
  {
    result[i] = Wire.read();
  }
  
  // Zwei Bytes ergeben eine Achsen Wert und könenn

// per Bit Shifting  zusammengelegt werden.
  
  // Beschleunigungssensor
  int acc_X = (((int)result[0]) << 8) | result[1];
  int acc_Y = (((int)result[2]) << 8) | result[3];
  int acc_Z = (((int)result[4]) << 8) | result[5];
  
  // Temperatur sensor
  int temp = (((int)result[6]) << 8) | result[7];
  
  // Gyroskopesensor
  int gyr_X = (((int)result[8]) << 8) | result[9];
  int gyr_Y = (((int)result[10]) << 8) | result[11];
  int gyr_Z = (((int)result[12]) << 8) | result[13];
  
  // Ausgabe
  Serial.print("ACC X:\t");
  Serial.print(acc_X); Serial.print("\t");
  Serial.print("Y:\t");
  Serial.print(acc_Y); Serial.print("\t");
  Serial.print("Z:\t");
  Serial.print(acc_Z); Serial.print("\t");
  Serial.print("Temperatur:\t");
  Serial.print(temp); Serial.print("\t");
  Serial.print("Gyroskope X:\t");
  Serial.print(gyr_X); Serial.print("\t");
  Serial.print("Y:\t");
  Serial.print(gyr_Y); Serial.print("\t");
  Serial.print("Z:\t");
  Serial.print(gyr_Z); Serial.println("\t");
  delay(1000);
}

void SetConfiguration(byte reg, byte setting)
{
   // Aufruf des MPU6050 Sensor
  Wire.beginTransmission(sensor_address);
  // Register Aufruf
  Wire.write(reg);
  // Einstellungsbyte für das Register senden
  Wire.write(setting);
  Wire.endTransmission();
}

Max1798:
vcc-vcc
GND-GND
SCL-port3
SDA-port2

Was meinst Du mit „port2“ und „port3“? MWn. nimmst Du Analogeingang 4 für SDA und A5 für SCL.

Max1798:
muss ich vielleicht noch scl und sda gegen + schalten?

Auf jeden Fall! Z. B. mit zwei 4k7-Widerständen gg. plus. Wegen dieser zwei dämlichen Pull-up-Widerständen habe ich mir vor ein paar Wochen stundenlang das Hirn verknotet.

Gruß

Gregor

bei arduino leonardo sind das die scl und sda ports

Wenn man es genau nimmt ist ein Pin nicht das gleiche wie ein Port. Die Arduino Software abstrahiert Ports völlig, so dass man erst mal nichts mehr damit zu tun hat. Auf dem Prozessor selbst ist ein Port eine Zusammenfassung von 8 Pins, die dann zusammen über die gleichen Register angesprochen werden.

ups gleich erwischt xD
danke für die korrektur ^^
werde das mit dem widerstand wohl heute abend mal testen
Oh mir ist grad aufgefallen dass ich den pull-up des atmega gar net angeschaltet hab o.0