I2C an A4 und A5 anstatt SCL und SDA?

Gute Frage, da steh ich nicht auf festem Boden :blush:

// Initialize the serial port.
Serial.begin(9600);

Es macht keinen Sinn, mehr Pullup einzubauen, als die Bausteine vertragen.
Damit gewinnst du nichts.

Zeichne doch bitte mal einen Plan, wie du deinen GY-271 angeschlossen hast.
Wie lang sind die Kabel.

uwefed:
Ich bestätige die vorhandenen Pullupwiderstände siehe
https://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
Oben mitte.

Grüße Uwe

Danke, die habe ich übersehen.

Gruß Tommy

Tommy56:
Danke, die habe ich übersehen.

Gruß Tommy

Die hat eben nur der Arduino MEGA 2560.
Grüße Uwe

rot ist 5V am Arduino und braun Masse.
Habe noch Servo, Motorshield und Ultraschallsensor am Arduino dran - alles geht - bin kein blutiger Anfänger :smiley:

Ich hoffe man kann am Bild alles sehen.

AB_002.jpg

Nächste Antwort wahrscheinlich erst morgen bin dann leider off obwohl ich jetzt gerne noch weiter machen würde.

(alles übrigens verlötet wg. Beanspruchung durch Vibration)

Gruß
Frank

Robitobi:
rot ist 5V am Arduino und braun Masse.
Habe noch Servo, Motorshield und Ultraschallsensor am Arduino dran - alles geht - bin kein blutiger Anfänger :smiley:

Ich hoffe man kann am Bild alles sehen.

Ähm, nix für Ungut, aber macht man das heutzutage wirklich so das man alles an Leitungen und Bauelemente nicht nur an der Unterseite anlötet sondern auch noch dort hinklatscht?
Kenne das eigentlich so, auch bei Lochraster, Drahtenden von der oberseite durch ein Loch schieben und an der Unterseite festlöten.
Das, was du da machst, ist nicht mal Amateurhaft und steigert das Kurzschlussrisiko enorm.

MfG
Andi

rot ist 5V am Arduino und braun Masse.

Schön.

Ein wenig sieht es so aus, als wäre SCL mit GND verbunden.
Die Lötstelle ist schlecht zu sehen.

Geprüft, ob GND und 5V wirklich da ankommen?
Multimeter.

Was ich jetzt tun würde:

Mit einem Multimeter den Strom zwischen SCL und GND messen.
Mit einem Multimeter den Strom zwischen SDA und GND messen.

In beiden Fällen würde ich einen Wert, zwischen 1 und 3 mA erwarten.

Ist das gegeben?

So lange an diesen Punkten arbeiten, bis der Scanner die richtige Adresse meldet.
Vorher gehts sowieso nicht weiter.


Dann würde ich mir den Code von der Lib anschauen…
Ich habe das mal für dich gemacht…

Die Lib verzichtet völlig auf eine Fehlerbehandlung.
Die würde ich da einbauen!

Des weiteren findet sich da gruseliger Schwachsinn.

  Wire.beginTransmission(HMC5883L_Address);

Wire.requestFrom(HMC5883L_Address, length);

uint8_t buffer[length];
  if(Wire.available() == length)
  {
  for(uint8_t i = 0; i < length; i++)
  {
  buffer[i] = Wire.read();
  }
  }
  Wire.endTransmission();

Es ist völliger Blödsinn, einen Wire.requestFrom() mit Wire.beginTransmission() und Wire.endTransmission() zu umrahmen.
Ein typischer Anfängerfehler.
Da hat einer nicht verstanden wie I2C und die Wire Lib funktionieren.
Und dazu noch die Beispiele in der Doku ignoriert.

Gruselig:
Es wird ein Zeiger auf einen lokalen Buffer zurückgegeben.
Dieser Buffer kann jederzeit von einer ISR oder einer anderen Funktion überschrieben werden.

Weiter habe ich noch nicht geschaut…
Die Lib bedarf einer gründlichen Überarbeitung.


Ähm, nix für Ungut, aber macht man das heutzutage wirklich so das man alles an Leitungen und Bauelemente nicht nur an der Unterseite anlötet sondern auch noch dort hinklatscht?
Kenne das eigentlich so, auch bei Lochraster, Drahtenden von der oberseite durch ein Loch schieben und an der Unterseite festlöten.
Das, was du da machst, ist nicht mal Amateurhaft und steigert das Kurzschlussrisiko enorm.

Ich finde das völlig ok so!
Ein übliches Verfahren bei der Prototypeentwicklung.
Wenn man mit Hochfrequenzen zu tun hat ist es sogar das einzig mögliche Verfahren.

uwefed:
Ich bestätige die vorhandenen Pullupwiderstände siehe
https://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
Oben mitte.

Grüße Uwe

AB_002.jpg

Das gesagte gilt für einen Orginal Arduino MEGA 2560. Die abgebildete Platine des Treadstarters ist aber kein Orginal. Darum ist es auch nicht sicher ob sie Pullupwiderstände drauf sind.

Grüße Uwe

Hallo, sieht nicht besonders gut aus aber ist alles optisch geprüft, vermessen und definitiv kurzschlussfrei.
Man kann auch schnell mal einen Draht lösen um Ströme zu messen.

Die 5 Volt liegen an mit einem Stromverbrauch von 0,04 mA
In den SDA und SDL-Leitungen beträgt der Strom 0mA
Der Sensor dürfte kaputt sein, nicht wahr?

Zwischen SCL und VCC und SDA und VCC messe ich übrigens 9,7kOhm - also müssten Pull-Up verbaut sein.

Mit dem Oszi sehe ich am SDA und am SCL einen konstanten Pegel von 5V wenn ich das I2C-Scanner-Script laufen lasse - also keinerlei Modulation.
Wenn ich zum Test das LED13-Blinkprogramm lade dann steht an SDL und SDA ebenfalls ein konstanter Pegel von 5V an. Scheinbar ist der Pegel an den zwei Pins standardmäßig High.
Also da tut sich vom Mega schon nichts.

Hab jetzt einen UNO genommen und auch das Scanner-Script geladen - auch hier ein konstanter Pegel von 5V an SCL und SDA. A4 und A5 sind übrigens auch High.

Komm jetzt nicht mehr weiter.

Scanner-Script: http://playground.arduino.cc/Main/I2cScanner

Gruss
Frank

Wie mußt Du? (Wo schlißt du Das oszilloskop an welche Zeitbasis wählst Du?) Mißt Du während des Aufrufs des I2C Scanners? Der Sketch von http://playground.arduino.cc/Main/I2cScanner mißt nur alle 5 Sekunden. Du könntest aber das delay() entfernen.

Auf SCL müßtest Du eine Rechteckspannung mit 100 oder 400kHz messen.

Grüße Uwe

Delay ist draußen. Kann trotzdem keine Rechteckspannung finden. Fühler habe ich an SCL und Masse an GND.
Die Zeitbasis habe ich komplett durchprobiert (ys -->ms)