BMP085 - Am Uno geht er, am Mega nicht?

Hallo,

habe ein Problem, das ich nicht verstehe... Habe einen BMP085 am Uno laufen. Wenn ich nun 1:1 alles am Mega anschließe und den gleichen Sketch hochlade (Board natürlich richtig ausgewählt), bekomm ich die Fehlermeldung "Kein BMP085 gefunden ... Prüfe I2C Adresse!". Wieso geht das auf dem Mega nicht? Die Adresse ändert sich ja nicht mit dem Wechsel des Boards? Wie kann ich beim BMP085 überhaupt die I2C-Adresse einstellen?

Gruss Daniel

DanielHD80:
Wenn ich nun 1:1 alles am Mega anschließe und den gleichen Sketch hochlade (Board natürlich richtig ausgewählt), bekomm ich die Fehlermeldung "Kein BMP085 gefunden ... Prüfe I2C Adresse!". Wieso geht das auf dem Mega nicht?

Lass mich mal raten:
Das geht nicht, weil Du vergessen hast, dass die I2C-Pins am MEGA nicht die gleichen wie am UNO sind.

http://arduino.cc/de/Reference/Wire

Auf dem MEGA-Board sind aber SDA und SCL extra beschriftet, so daß man es eigentlich auch einfach sehen kann, wenn man genau hinsieht, dass es nicht dieselben Pins wie am UNO sind.

jurs:
Das geht nicht, weil Du vergessen hast, dass die I2C-Pins am MEGA nicht die gleichen wie am UNO sind.

Du hast Recht... Und ich bin immer davon ausgegangen, dass der Mega nur mehr Pins hat, die des Uno aber kompatibel sind. Und ich habe ein Shield gebaut. Kann ich das nun irgendwie "umbiegen" oder muss ich ein neues machen?

Es gibt Libs die I2C in Software emulieren. Das geht unter Umständen.

http://rweather.github.io/arduinolibs/classSoftI2C.html

DanielHD80:
Du hast Recht... Und ich bin immer davon ausgegangen, dass der Mega nur mehr Pins hat, die des Uno aber kompatibel sind. Und ich habe ein Shield gebaut. Kann ich das nun irgendwie "umbiegen" oder muss ich ein neues machen?

Au weia. Du könntest nun von Deinem mißratenen Shield eine Verbindung von A4 zum Mega-SDA (D20), und ebenso eine Verbindung von A5 zum Mega SCL (D21) ziehen.

Diese vier Pins (A4, A5, D20, D21) darfst Du dann für nichts anderes als I2C verwenden. Dann programmierst Du den Mega ganz normal, die Arduino-Wire-Library spricht bei Einstellung eines MEGA2560 Boards D20 und D21 an, und falls das BMP085 Breakout-Board über eigene PullUp-Widerstände verfügt (solltes es eigentlich), müßte es dann schon mit demselben Sketch funktionieren und es schadet weiter nicht, dass die verbundenen Pins A4 und A5 auf standardmäßig INPUT LOW stehen und die Spannung ein ganz klein wenig unter 5V runterziehen.

Nur mußt Du dann, wenn dieses Schield mit den zwei Kurzschlußverbindungen auf dem Board steckt penibel drauf aufpassen, dass die querverbundenen Pins immer auf INPUT oder INPUT_PULLUP stehen müssen und Du darfst bei aufgestecktem Shield niemals die zwei kurzgeschlossenen Pins auf OUTPUT mit gegenläufigen Pegeln setzen, z.B. einen Pin HIGH und den anderen LOW, dann hast Du am Controller einen internen Kurzschluß, der den Controller oder einige Pins schrotten kann.