Error en Arduino UNO con módulo SD

Hola a todos:

Tengo un problema y no sé cuál puede ser.

Tengo conectado un SD al Arduino UNO, y no me da error en SD.begin si no al escribir en la tarjeta.
La tarjeta la tengo conectada al arduino a 5v con el siguiente esquema de pines:

CS a 9
SCK a 13
MOSI a 11
MISO a 12
El código es el siguiente:

#include <SD.h>
#include <SPI.h>
#include "DHT.h"  //Añadimos la libreria 
File logFile;
#define HT1 5
#define HT2 13


// El sensor que vas a emplear. En este caso usamos el DHT22
#define DHTTYPE DHT22   // DHT 22

DHT dht1 (HT1, DHTTYPE);  //Indica el pin con el que trabajamos y el tipo de sensor
DHT dht2 (HT2, DHTTYPE);
int ldrPin = 3;

void setup()
  {
  Serial.begin(9600);
  Serial.println("DHT22 test!");
  dht1.begin();  //Iniciamos el sensor
  dht2.begin();
  
  Serial.println(F("Iniciando SD ..."));
  if (!SD.begin(9)) {
    Serial.println("No se pudo inicializar");
    return;

  }

  
  }

void loop()
{

  delay(2000);
  float h1, h2, t1, t2 = 0;
  // La lectura de la temperatura o de la humedad lleva sobre 250 milisegundos 
  // La lectura del sensor tambien puede estar sobre los 2 segundos (es un sensor muy lento)
  h1 = dht1.readHumidity();  //Guarda la lectura de la humedad en la variable float h
  t1 = dht1.readTemperature();  //Guarda la lectura de la temperatura en la variable float t

  h2 = dht2.readHumidity();  //Guarda la lectura de la humedad en la variable float h
  t2 = dht2.readTemperature();  //Guarda la lectura de la temperatura en la variable float t

  int val = digitalRead(ldrPin);

 
   Serial.print("Humidity1: ");
   Serial.print(h1);
   Serial.print(" %\t");
   Serial.print("Temperature1: ");
   Serial.print(t1);
   Serial.print(" *C ");
   Serial.print("Humidity2: ");
   Serial.print(h2);
   Serial.print(" %\t");
   Serial.print("Temperature2: ");
   Serial.print(t2);
   Serial.print(" *C ");
   Serial.print(" luz ");
   Serial.print(val);
  
        // Abrir archivo y escribir valor
        logFile = SD.open("datalog.txt", FILE_WRITE);
        
        if (logFile) { 
              
              logFile.print("Humidity1 ");
              logFile.print(h1);
              logFile.print(" Temperature1 ");
              logFile.print(t1);
              logFile.print(" Luz ");
              logFile.print(val);
              logFile.close();
        
        } 
        else {
          Serial.println("Error al abrir el archivo");
        }
    
  delay(5000);

  
  }

La tarjeta SD la he formateado según el software de sd.org y nada.

Gracias

Te falda definir como salida el pin que usaras para CS (9)

void setup(){
   Serial.begin(9600);
   pinMode(9, OUTPUT);                  //Falta esto
   Serial.println("DHT22 test!");
   dht1.begin();  //Iniciamos el sensor
   dht2.begin();

   Serial.println(F("Iniciando SD ..."));
   if (!SD.begin(9)) {
      Serial.println("No se pudo inicializar");
      return;
   }
}