Keine Ausgaben des BMP 280 Sensors

Ich programmiere gerade mein Code für einen Bordcomputer für eine Modellrakete. Soweit funktioniert alles, außer der Messung von Temperatur von Luftdruck. Die Werte sollen 1 Minute lang auf eine SD-Karte geschrieben werden. Jedoch bekomme ich nur Werte von "0.00". Ich habe schon einiges probiert, mir fällt jedoch nichts mehr ein.

Ich habe außerdem jede einzelne Komponente getestet und diese funktionieren auch einwandfrei, auch der BMP 280 Sensor.

So sieht ein Ausschnitt aus der Textdatei der SD-Karte aus:

0.00
0.00
0.00
nan
0.50
0.00
0.00
nan
1.00
0.00
0.00
nan
1.50
0.00
0.00
nan
2.00
0.00
0.00
nan
2.50
0.00
0.00
nan
3.00
0.00
0.00
nan
3.50
0.00
0.00
nan
4.00
0.00
0.00
nan
4.50
0.00
0.00
nan
5.00
0.00
0.00
nan
5.50
0.00
0.00
nan
6.00
0.00
0.00
nan
6.50
0.00
0.00
nan
7.00
0.00
0.00
nan
7.50
0.00
0.00
nan
8.00
0.00
0.00
nan
8.50
0.00
0.00
nan
9.00
0.00
0.00
nan
9.50
0.00
0.00
nan

...und so weiter und so fort...

Und dies ist er Code:

//-----------Biblotheken--------------------

#include <Adafruit_BMP280.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#define BMP_SCK  (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS   (10)
const int chipSelect = 4;

Adafruit_BMP280 bmp;

//------------Variablen---------------------

float sek = 0;
float nh;
int narda = 0;
int count = 60; //Wie lange der Countdown gehen soll (s)

//Variablen für Pins
int pred = 10;
int pgreen = 9;
int pblue = 6;

int sig = 8;
int hold = 7;

int pyro1 = 5;
int pyro2 = 2;

int buzzer = 3;

int hallo = 0;
int bt = 800;

//---------------------Setup-------------------------

void setup() {
  void checks();
  //LED
  pinMode(pred, OUTPUT);
  pinMode(pgreen, OUTPUT);
  pinMode(pblue, OUTPUT);
  
  //Kommunikation Startvorrichtung
  pinMode(sig, INPUT); //Input für´s Signal
  pinMode(hold, INPUT); //Input für`s Hold-Signal

  //Zündungen
  pinMode(pyro1, OUTPUT); //Zündunge von Pyro1
  pinMode(pyro2, OUTPUT); //Zündung von Pyro2

  //Buzzer
  pinMode(buzzer, OUTPUT);
  
  
  //serial monitor
  Serial.begin(9600);
  /*while (!Serial) {
    ; 
  }*/

  checks();
  


//-----------------Warte auf Countdown---------------------------

  while(digitalRead(sig) < 1) {
    //Serial.println("Signal: " + digitalRead(sig));
    //Serial.println("Hold: " + digitalRead(hold));
    /*if (digitalRead(hold) == 1) {
      //Serial.println("Signal: " + digitalRead(sig));
      //Serial.println("Hold: " + digitalRead(hold));
      red();
      tone(buzzer, bt);
      delay(500);
      noTone(buzzer);
      delay(500);
      blue();
      tone(buzzer, bt);
      delay(500);
      noTone(buzzer);
      delay(500);
      yellow();
      tone(buzzer, bt);
      delay(500);
      noTone(buzzer);
      delay(500);
      green();
      tone(buzzer, bt);
      delay(500);
      noTone(buzzer);
      delay(3000);
    }*/
    delay(1000);
  }


//-----------------Countdown---------------------------
  
  while(count > 0) {
    
    blue();
    if(digitalRead(hold) ==10){
      red();
      alarm();
      Serial.print("Hold");
      while (narda == 0){
        ;
      }
    }
    count = count -1;
    delay(1000);

    green();
    /*if(digitalRead(hold) ==1){
      red();
      alarm();
      while (narda ==0){
        ;
      }
    }*/
    count = count -1;
    delay(1000);

  }

//-----------------------Start---------------------
  purple();
  count = 0;

  //Messen der Nomalhöhe
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  
  nh = (bmp.readPressure()/100);
  dataFile.println(nh);
  dataFile.println("pa");
  dataFile.close();  // noch die daten auf die sdkarte schreiben 
  Serial.println("Start");

}


//------------Während des Fluges--------------

void loop() {

  //Daten nehmen
  
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  dataFile.println(sek);
  dataFile.println(bmp.readTemperature()); //in Grad //Falls der alles in eine Zeile schreibt, "ln" nach"print" einfügen
  dataFile.println(bmp.readPressure()); //in PA
  dataFile.println(bmp.readAltitude(nh));  //im m
  dataFile.close();
  
  //Evtl. andere Sachen
  
  aktion();
  
  sek = sek + 0.5; 
  delay(500);

}


//-----------Weitere Voids-------------------------

void red() {
  digitalWrite(pred, HIGH);
  digitalWrite(pblue, LOW);
  digitalWrite(pgreen, LOW);
}

void green() {
  digitalWrite(pred, LOW);
  digitalWrite(pblue, LOW);
  digitalWrite(pgreen, HIGH);
}

void blue() {
  digitalWrite(pred, LOW);
  digitalWrite(pblue, HIGH);
  digitalWrite(pgreen, LOW);
}

void yellow() {
  digitalWrite(pred, HIGH);
  digitalWrite(pblue, LOW);
  digitalWrite(pgreen, HIGH);
}

void purple() {
  digitalWrite(pred, HIGH);
  digitalWrite(pblue, HIGH);
  digitalWrite(pgreen, LOW);
}

void aktion () {
  
  if (sek == 0.00) {
    tone(buzzer, bt);
  }
  if (sek == 0.50) {
    noTone(buzzer);
  }
  if (sek == 1.00) {
    tone(buzzer, bt);
  }
  if (sek == 1.50) {
    noTone(buzzer);
  }
  if (sek == 2.00) {
    digitalWrite(pyro1, HIGH);
    yellow();
  }
  if (sek == 3.50) {
    digitalWrite(pyro1, LOW);
    purple();
  }

  //Ende
  
  if (sek == 60.00) {
    File dataFile = SD.open("datalog.txt", FILE_WRITE);
    dataFile.println("Aufzeichnung erfolgreich abgeschlossen");
    dataFile.close();
    while ('7' == '7') {
      tone(buzzer, bt);
      blue();
      delay(1000);
      noTone(buzzer);
      red();
      delay(1000);      
    }
  }
}


void checks() {
  
  //Serial.print("Initializing SD card...");

  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    red();
    alarm();
    // don't do anything more:
    while (1);
  }
  //Serial.println("card initialized.");
  
  if (!bmp.begin(0x76)) {
    Serial.println(F("Could not find a valid BMP280 sensor, check wiring or try a different address!"));
    red();
    alarm();
  }
  
  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_500);
  green();
  tone(buzzer, bt);
  delay(500);
  noTone(buzzer);

  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  dataFile.println("Setup abgeschlossen");
  dataFile.close(); 

  //Serial.println("Setup abgeschlossen");
}

void alarm() {
  tone(buzzer, bt);
  delay(200);
  noTone(buzzer);
  delay(200);
  tone(buzzer, bt);
  delay(200);
  noTone(buzzer);
  delay(200);
  tone(buzzer, bt);
  delay(200);
  noTone(buzzer);
}

Ein problem. Es Muss sein

Void SETUP () {

CHECKS();

Nicht:

Void SETUP() {

Void CHECKS();

Zweimal Sie haben", in setup() und loop():

"File dataFile = SD.open("datalog.txt", FILE_WRITE);"

Ich denke Sie mussen einmal machen

"File dataFile;" mit die anderen Variabelen:

File dataFile;
float nh;
float sek;
int narda;

USW.

In loop() {
.
.
.
dataFile = SD.open("datalog.txt", FILE_WRITE);

Vielen Dank für ihre Hilfe. Das "File" vor "dataFile" musste ich zwar stehen lassen, da er sonst meint, dass "dataFile" nicht deklariert wäre. Sonst funktioniert es jetzt. Danke

It was my pleasure.

John, aus Kanada