Hallo liebe Community,
ich möchte einen Arduino mit einem Raspberry pi über I2C verbinden. Eigentlich keine Hexerei. Nach Anschluss (erstmal mit Level Converter) und entsprechender Programmierung fand der Raspberry den Arduino nicht. Selbst mit i2cdetect war kein Device zu finden. Selbst ohne Level Converter nicht. Dann habe ich den Raspberry mit einem BH 1750 ausprobiert und habe eine Adresse und auch Daten erhalten. Also liegt das Problem im Arduino. Nach dem Umbau des BH1750 auf den Arduino waren diesem keine Werte mehr zu entlocken. Ich habe jetzt schon einiges in Foren gelesen und auch ausprobiert, leider ohne Erfolg. Selbst mit den diskutierten PullUp Widerständen. Leider alles ohne Erfolg.
Hallo Zusammen,
danke für die Hinweise. Dies mit der Slave-Addresse habe ich bei dem Versuch mit dem Raspberry ja gemacht. Ich habe jetzt in dem BH1750 Sketch nochmal Wire.begin(); hinzugefügt. In diesem Sketch ist der Arduino ja der Master, also ohne Adresse. Alles ohne Erfolg. Der Start des Sensors ist in der Zeile Init = sensor.begin();. Ich hatte in der Library nachgeschaut. begin() liefert ein Boolean. Dies soll die Variable Init aufnehmen und dann mit Serial.print(Init); ausgeben. So weit kommt der der Sketch aber gar nicht.
Verstehe ich das richtig, dass Du den Arduino als Master gegenüber dem Sensor und als Slave gegenüber dem Raspi betreiben willst? Ich glaube das geben die Libs nicht her.
Da könntest Du den Arduino ja auch weg lassen und den Sensor vom Raspi aus abfragen.
Das immer wieder auftrende Drama ist folgendes; Wire.begin(); in der Lib.begin() Methode!
Welches ein vorheriges Wire.begin(irgendwas); im Hauptprogramm "überschreibt"
Das ist das einzige Hindernis, gleichzeitig Master und Slave zu sein.
combie:
Das immer wieder auftrende Drama ist folgendes; Wire.begin(); in der Lib.begin() Methode!
Welches ein vorheriges Wire.begin(irgendwas); im Hauptprogramm "überschreibt"
Das ist das einzige Hindernis, gleichzeitig Master und Slave zu sein.
Hallo Zusammen,
der Arduino soll nicht Master und Slave sein. Ich hatte vorher versucht den Raspberry mit dem Arduino per I2C zu verbinden. Der Raspberry fand den Arduino nicht, selbst mit dem Kommandozeilenbefehl i2cdetect nicht. Um Fehler auszuschalten habe ich den Raspberry mit dem BH1750 verbunden (ohne Arduino natürlich). Dies klappte auf Anhieb. Somit muss ich davon ausgehen, dass der Arduino das Problem ist. Deshalb habe ich den Sensor auf den Arduino umgebaut. Dies klappte dann nicht mehr.
Selbst mit dem Beispiel i2c scanner aus der Wire Library findet der Arduino den Sensor nicht.
@ combie Ich habe den zu Anfang geposteten Sketch zunächst ohne Wire.begin() geschrieben und dann noch mal zur Sicherheit mit Wire.begin() beides ohne Erfolg. Bus meldet sich einfach nicht. der Arduino friert ein.
Egal was ich dem i2c des Arduino verkaufe, ich bekomme keine Antworten vom Bus. Ich muss davon ausgehen, dass dieser Arduino irgendein Problem mit seinem I2C Bus hat. Warum auch immer. Verzweifel!!!
@HotSystems welchen meintest du? #7 ist von Tommy56. Wenn du das mit lightmeter.begin() meinst, dann habe ich das bei mir in Zeile 10 Init = sensor.begin(); @tommy56 Der Arduino ist derzeit nur zum Test des I2C am BH1750. Damit läuft es nicht. Wie eben gesagt selbst der Beispielsketch aus der i2c_scanner der Wire Library friert ein.