SPI mehrere Geräte funktionieren nicht

Hallo zusammen,

ich möchte 2 Geräte über SPI anschließen - einen BMP280-Sensor und ein Micro-SD-Modul

Wenn ich den Drucksensor über CS =10 anschließe, krieg ich einwandfrei die Werte übermittelt.
Wenn ich jetzt aber das SD-Modul über CS=9 anschließe, werden der BMP und das SD-Modul garnicht mehr erkannt.

Es reicht auch aus, dass ich nur im Code den Befehl gebe, den Arduino überprüfen zu lassen, ob das SD-Modul angeschlossen ist, egal ob es physisch wirklich dranhängt oder nicht.
In weiterer Folge gibt mir der BMP also keine Werte mehr aus, sondern nur noch 0.

#include <Wire.h>
#include <SPI.h>
#include<SD.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_Sensor.h>

#define BMP_SCL 13
#define BMP_SDO 12
#define BMP_SDA 11
#define BMP_CSB1 10

Adafruit_BMP280 bmp(BMP_CSB1, BMP_SDA, BMP_SDO, BMP_SCL);
float h_0, h_1, h;
void setup()
{
  Serial.begin(115200);
  Serial.println("BMP280 & SD Test");

  if (!bmp.begin()) {
    Serial.println("BMP nicht gefunden"); 
  }

  if (!SD.begin(9)) //Wenn ich diesen Teil auskommentiere, kann der Sensor einwandfrei gelesen werden
  {
  Serial.println("SD nicht gefunden");
  delay(500);
  }


  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_1); /* Standby time. */

      h_0 = bmp.readAltitude(1013.25);

     Serial.print(F("Anfangshoehe = "));
    Serial.print(h_0);
    Serial.println(" m");  

     delay(1000);        
}

void loop() {
    
h_1=bmp.readAltitude(1013.25);

    h=h_1-h_0;
    Serial.print("relative Hoehe: ");
    Serial.print(h);
    Serial.println(" m");

    Serial.println();
    delay(10);
}

Und warum löschst Du Dein erstes Posting?

Gruß Tommy

Ich dachte ich hatte da einen Fehler drin, war aber doch nicht so

Auch einen Fehler kann man berichtigen, da muss nicht gelöscht werden.

Sorry

Kannst Du mal bitte ein Foto vom Aufbau machen - von oben.

Danke!

Da fehlt das SD Modul :frowning:

Es ist egal ob das SD-Modul dabeihängt oder nicht, auch ohne funktioniert der Sensor nicht mehr

Steck mal PIN 10 aus und den in PIN 8 - ändere Deinen Code entsprechend.

Hat nichts bewirkt

Was ist denn das für ein Sensorshield - adafruit seines ist es nicht.

Ach doch:

Aber der hat auch 7 Pin - Bei Dir sind es nur 6.
Also was ist das für ein Sensorshield?

Versorgung 3,3V und SignalPegel 5V? Ist das so richtig?

Es wird wahrscheinlich dieses Modul sein
https://www.reichelt.de/entwicklerboards-temperatur-und-drucksensor-bmp280-debo-bmp280-p266034.html

Je genau das ist es

Der braucht einen Levelshifter.

Und wieso funktioniert er dann trotzdem, wenn nur dieser Sensor angesprochen wird?

Weil er es kann!
Datenblatt:
https://cdn-shop.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf

Dann erübrigt sich der Levelshifter doch und das Problem liegt wo anders?

Und warum steuerst du den Sensor nicht per I2C ?

Ich dachte es geht um ein BMP280 und nicht um ein BME280.