Problema con DS1307 y DHT22

¡Buenas!

Tengo montado en un Arduino Leonardo los sensores DHT22 y BMP085 además del RTC DS1307. Todas las partes funcionan perfectamente individualmente y también la unión DS1307-BMP05 y BMP085-DHT22 pero si uno a los tres (DS1307, DHT22, BMP085) tengo problemas con el RTC. En el programa tengo que cada 3 segundos se obtenga la información pero al tener los tres componentes veo que en el los segundos los datos se toman cada tres y cuatro segundos alternativamente cosa que no ocurre cuando solo está el DS1307 con el BMP085 que toma la información siempre cada 3 segundos.

He cambiado el tiempo y se mantiene el error. Según lo leído creo entender que el sensor DHT22 obtiene datos nuevos cada dos segundos y tarda 0,25 segundos en tomarlo ¿puede ser ese tiempo de toma de dato la fuente del error? ¿cómo podría solucionarse?

Adjunto imagen de Monitor Serial con el error y el programa:

#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_BMP085.h>
#include "DHT.h"

#define DHTPIN 4
#define DHTTYPE DHT22

RTC_DS1307 RTC;
Adafruit_BMP085 bmp;
DHT dht(DHTPIN, DHTTYPE);

void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();

// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(DATE, TIME));

Serial.println("DHTxx test!");
dht.begin();

if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}

void loop () {
DateTime now = RTC.now();

Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print(' ');
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(" ");

// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();

// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" % ");
}
Serial.print("Presion= ");
Serial.print(bmp.readPressure());
Serial.print(" Pa ");
Serial.print("Altitud= ");
Serial.print(bmp.readAltitude(102400));
Serial.println(" m");

delay(3000);
}

Muchas gracias a todos de ante mano.
Saludos.