SPI Micro SD Card - ошибка при открытии текстового файла - почему он не работает? - PullRequest
1 голос
/ 14 марта 2020

Прежде всего, извините за мой плохой английский sh и мои навыки программирования ... я еще новичок. У меня проблема с внедрением примера кода в мой проект. Пример кода для регистрации данных на моей SD-карте работает. Таким образом, нет ошибок проводки. Реализуя этот рабочий код в моем проекте, arduino не может найти текстовые данные, и я не знаю почему. Кто-нибудь может мне помочь ?

Я работаю с Arduino Nano V3. и кард-ридер SPI.

Вот что происходит на последовательном мониторе:

Инициализация карты SD ... карта инициализирована. ошибка открытия datalog.txt

Вот мой код - извините за использованные немецкие слова ... но я думаю, что они не будут мешать


#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
RTC_DS3231 rtc;
#include <SimpleDHT.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;              // SD KARTE


int pinDHT22 = 2;                       // Kombisensor
SimpleDHT22 dht22(pinDHT22);

float temperature = 0;
float humidity = 0;
volatile float windgeschwindigkeit = 0;
unsigned long previousMillis = 0;
volatile int Impulscounter = 0;   // Impulszähler für Windgeschwindigkeit
unsigned long windmillis = 0;
int a = 0;

File Datenlog;


void wind()
{
  Impulscounter = Impulscounter + 1;

  if( Impulscounter == 1)
      {  
        windmillis = millis();
      }

}

void setup() 
{
      pinMode(3, INPUT);
      lcd.begin();
      lcd.backlight();  
      Serial.begin(9600);
      attachInterrupt(1, wind, RISING);

      while (!Serial) {         // wait for serial port to connect. Needed for native USB port only
    ; 
  }


  Serial.print("Initializing SD card...");       


  if (!SD.begin(chipSelect)) {                            // see if the card is present and can be initialized:
    Serial.println("Card failed, or not present");  
                                                           // don't do anything more:
    while (1);
  }
  Serial.println("card initialized.");

 Datenlog = SD.open("test.txt", FILE_WRITE);

 if (Datenlog){

   Datenlog.print("Tag     ");                   // ... und die Textdatei anschließend befüllt werden. 
   Datenlog.print("Datum     ");
   Datenlog.print("Uhrzeit    ");
   Datenlog.print("Aussentemperatur     ");
   Datenlog.print("Aussenfeuchtigkeit     ");
   Datenlog.print("Windgeschwindigkeit     ");
   Datenlog.print("Gehaeusetemperatur     ");


   Datenlog.close();       
   Serial.print ( "it worked");
 }
  else {
     Serial.println("error opening datalog.txt");
  }
}


...