Arduino due mit Mpu6050

OP #3765802
Lesenswert?
• ▲
▼
hey Leute hoffe vir kann einer von euch weiter helfen

Irgendwie wollen mein due nd meinmpu 6050 nicht so wirklich miteinander
hoffe es kann mir wer weiter helfen mit meinem code ich bekomme am 
serial monitor immer nur
i2cWrite failed: 2     zu sehen.

danke schon mal für eure hilfe

1
const uint8_t IMUAddress = 0x68; // AD0 is logic low on the PCB
2
const uint16_t I2C_TIMEOUT = 1000; // Used to check for errors in I2C communication
3

4
uint8_t i2cWrite(uint8_t registerAddress, uint8_t data, bool sendStop) {
5
  return i2cWrite(registerAddress, &data, 1, sendStop); // Returns 0 on success
6
}
7

8
uint8_t i2cWrite(uint8_t registerAddress, uint8_t *data, uint8_t length, bool sendStop) {
9
  Wire.beginTransmission(IMUAddress);
10
  Wire.write(registerAddress);
11
  Wire.write(data, length);
12
  uint8_t rcode = Wire.endTransmission(sendStop); // Returns 0 on success
13
  if (rcode) {
14
    Serial.print(F("i2cWrite failed: "));
15
    Serial.println(rcode);
16
  }
17
  return rcode; // See: http://arduino.cc/en/Reference/WireEndTransmission
18
}
19

20
uint8_t i2cRead(uint8_t registerAddress, uint8_t *data, uint8_t nbytes) {
21
  uint32_t timeOutTimer;
22
  Wire.beginTransmission(IMUAddress);
23
  Wire.write(registerAddress);
24
  uint8_t rcode = Wire.endTransmission(false); // Don't release the bus
25
  if (rcode) {
26
    Serial.print(F("i2cRead failed: "));
27
    Serial.println(rcode);
28
    return rcode; // See: http://arduino.cc/en/Reference/WireEndTransmission
29
  }
30
  Wire.requestFrom(IMUAddress, nbytes, (uint8_t)true); // Send a repeated start and then release the bus after reading
31
  for (uint8_t i = 0; i < nbytes; i++) {
32
    if (Wire.available())
33
      data[i] = Wire.read();
34
    else {
35
      timeOutTimer = micros();
36
      while (((micros() - timeOutTimer) < I2C_TIMEOUT) && !Wire.available());
37
      if (Wire.available())
38
        data[i] = Wire.read();
39
      else {
40
        Serial.println(F("i2cRead timeout"));
41
        return 5; // This error value is not already taken by endTransmission
42
      }
43
    }
44
  }
45
  return 0; // Success
46
}

mfg thomas

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.