PIN-MANGEL bei SD und BlueTooth

Guten Abend,
ich bitte um Hilfe bei folgendem Problem:

Ein SD-shield und eine Bluetooth-shild sollen gemeinsam verwendet werden.

Auf einem Arduino Mega ist ein Deek-Robot Datalogging shield aufgesteckt.
Dieses shield verwendet die Pins 10 bis 13: if (!SD.begin(10,11,12,13)) .

Das Bluetooth sheeld HC05 funktioniert nur mit den Pins 10 und 11:
SoftwareSerial BT_(10,11); // RX, TX

Gibt es eine Lösung?
Vielen Dank
Jürgen

Auf einem Arduino Mega ist ein Deek-Robot Datalogging shield aufgesteckt.
Dieses shield verwendet die Pins 10 bis 13: if (!SD.begin(10,11,12,13)) .

Da ist was falsch gelaufen!

Der Mega hat die SPI nicht auf Pin 10 bis 13.

Auch solltest du für dein BT kein Softserial verwenden, wenn du doch 4 Harwareserials hast.

Dank für die Antwort.
Das shield hat etwas die Größe vom UNO (der ResetKnopf und die Aufschrift MEGA ist frei sichtbar) d.h. mit den Pins Digital 22 bis 53 besteht kein Steckkontakt.
Was kann man tun?
Bis Bald

Was kann man tun?

Ich würde zuerst die Dokumentation der beteiligten Komponenten lesen.
Schaltpläne studieren usw...

Und weiterhin die SPI-Pins umbiegen (nicht stecken) und auf die richtigen Pins des Mega verkabeln.

Das gilt evtl. auch noch für andere Pins, daher wie combie geschrieben hat, unbedingt Dokumentation lesen.

hi,

soweit ich mich erinnere, funktioniert das ethernetshield mit dem mega problemlos ohne umbiegen.
die SPI-pins werden doch über den sechspoligen programmierstecker in der mitte gezogen. oder irre ich mich da so sehr?

gruß stefan

Eisebaer:
oder irre ich mich da so sehr?

Ja, es ist ein Logging-Shield :wink:

So viele Antworten, da keimt eine Hoffnung auf.

Wie geht das mit dem Wegbiegen?

Soll ich beim Aufstecken Pin 10 bis 13 wegbiegen und mit 51 bis 53 verbinden?
Was steht dann statt: if (!SD.begin(10,11,12,13)) im Sketch.

Seid gütig mit mir, -falls man es nicht bemerkt hat- ich bin ein Anfänger.
Danke Jürgen

Du kannst auf das Shield eine 3x2 Buchse nach unten löten und die SPI Pins vom ICSP benutzen.

Das funktioniert bei mir prima.


Whandall:
Du kannst auf das Shield eine 3x2 Buchse nach unten löten und die SPI Pins vom ICSP benutzen.

Das funktioniert bei mir prima.

Das sollte auch passen, nur die Pins vom Bord muss er dennoch abschneiden, oder wie bei dir, die Leiterbahnen trennen. Gute Idee.

Hie ist noch zur besseren Orientierung ein Layout des MEGA, findest du (jupi) übrigens alles im Web. :wink:
MEGA

Stimmt, hatte ich vergessen zu erwähnen.

Auf dem Leonardo (da steckt mein Deek drauf) ist das ja genauso.
Da musste ich auch noch die I2C Leitungen umklemmen um den RTC lesen zu können.

Hi,

betreib doch den HC-05 mit RX und TX Pin, diese Pins sind in der Regel unbenutzt, sollte also eigentlich kein Problem darstellen oder?

Ludwig98Mueller:
betreib doch den HC-05 mit RX und TX Pin, diese Pins sind in der Regel unbenutzt, sollte also eigentlich kein Problem darstellen oder?

Die sind nicht frei, wenn man man USB verwenden will.

jupi:
Auf einem Arduino Mega ist ein Deek-Robot Datalogging shield aufgesteckt.
Dieses shield verwendet die Pins 10 bis 13: if (!SD.begin(10,11,12,13)) .

Beim UNO sind das die Pins für Hardware-SPI (10 als CS). Die Idee von Adafruit ist, beim Mega Software-SPI zu verwenden. Dafür nutzen sie eine aktualisierte Bibliothek, die die Definition der Pins zuläßt. Es sollte auch SD.begin(22,23,24,25) funktionieren, wenn Du die entsprechenden Pins mit den Pins 10,11,12,13 des Shields verbindest und die Verbindung zu den Arduino-Pins trennst.

jupi:
Das Bluetooth sheeld HC05 funktioniert nur mit den Pins 10 und 11:
SoftwareSerial BT_(10,11); // RX, TX

Auch hier wird SoftwareSerial verwendet. Es sollte auch BT_(26,27) funktionieren, wenn Du die entsprechenden Pins mit den Pins 10,11 des HC05-Shields verbindest und die Verbindung zu den Arduino-Pins trennst.

Das HC05-Shield hast Du nicht verlinkt, daher kann ich dazu nichts sagen.

Mein Vorschlag: Datalogging Shield unverändert lassen und mit SD.begin(10,11,12,13) verwenden, das scheint erprobt zu sein. Beim HC05-Shield die Verbindungen mit Arduino-Pin 10 und 11 trennen und, wie schon vorgeschlagen, mit Hardware-Serial verbinden, beispielsweise Rx3 und Tx3 an Pin 15 und 14 (Serial3.begin()).