SD.open error

I've build a simple program controlling a relay depending on humidity (DHT11 sensor). Now I want to log the sensor values and have bought and installed a SDshield. The shield works fine with the example programs (datalogger, cardinfo) but when I use my own bit of code, it fails to open the file for writing. The compiler does not give any error messages and I have looked the code over a dussin times. To my rather untrained eyes everything seems to be in order, but obviously it's not. I would be greatful for any help. What am I missing here?

My program:

#include "DHT.h"
#define DHTPIN 7 //pin för sensor output
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

#include <SD.h>
const int chipSelect = 4;

#define RELAY_ON 1
#define RELAY_OFF 0
#define RELAY_1 2 //pin för relä 1

void setup() {
  Serial.begin(9600);
  dht.begin();

  Serial.println("Welcome to Mushroom Incubator!");
  Serial.print("Initializing SD card...");
  pinMode(10, OUTPUT);

  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    return;
  }

  Serial.println("card initialized.");

  pinMode(RELAY_1, OUTPUT);
  digitalWrite(RELAY_1, RELAY_OFF);
}

void loop() {
  delay(2000); //vänta 2 sec mellan mätningar
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }  
  //bygg ev. dataString här...

  File HumidityLog = SD.open("HumidityLog.txt", FILE_WRITE);
  if (HumidityLog) {
    HumidityLog.print(h);
    HumidityLog.println(",");
    HumidityLog.close();
  }
  else {
    Serial.println("error opening HumidityLog.txt");
  } 

  File TemperatureLog = SD.open("TemperatureLog.txt", FILE_WRITE);
  if (TemperatureLog) {
    TemperatureLog.print(t);
    TemperatureLog.println(",");
    TemperatureLog.close();
  }
  else {
    Serial.println("error opening TemperatureLog.txt");
  } 

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" *C ");

  if (h < 70) {
    Serial.println("Humidity LOW, relay switched ON");
    digitalWrite(RELAY_1, RELAY_ON);
    delay(3000); //kör i X sec
    Serial.println("Relay switched OFF, waiting for new sensor values");
    Serial.println("");
    digitalWrite(RELAY_1, RELAY_OFF); //stäng av, vänta på ny sensor output
  }

  else {
    Serial.println("Humidity HIGH, relay switched OFF");
    Serial.println(" ");
    digitalWrite(RELAY_1, RELAY_OFF);
  }
}

8.3 filenames...

MarkT:
8.3 filenames...

Thank you :slight_smile: completly missed this. Seems to work like a charm now!