Vielen Dank thewknd,
Ich habe die Sensoren von den Pins 10, 11, 12 abgesteckt und auch aus dem Programm entfernt.
Die SD-Karte ist in einem Adafruit Data Logging Shield, das Huckepack auf dem Arduino sitzt.
Ich hoffe das nutzt tatsächlich die von dir angegebenen Pins.
Jetzt schreibt er alle 20 Sekunden (also bei jedem Intervall) "DHTxx test!" auf den Serial Monitor.
Sonst nichts.
Vorher hat er das nur am Anfang einmal geschrieben und dann halt alle 20 sek die Messwerte.
Hier der Code wie er jetzt aussieht:
#include "DHT.h"
#include <Wire.h>
#include "RTClib.h"
#include <SPI.h>
#include <SD.h>
#define DHT2PIN 2 // what pin we're connected to
#define DHT3PIN 3
#define DHT4PIN 4
#define DHT5PIN 5
#define DHT6PIN 6
#define DHT7PIN 7
#define DHT8PIN 8
#define DHT9PIN 9
#define DHT2TYPE DHT22
#define DHT3TYPE DHT22
#define DHT4TYPE DHT22
#define DHT5TYPE DHT22
#define DHT6TYPE DHT22
#define DHT7TYPE DHT22
#define DHT8TYPE DHT22
#define DHT9TYPE DHT22
RTC_DS1307 rtc;
const int chipSelect = 10;
File dataFile;
// Initialize DHT sensor
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);
DHT dht4(DHT4PIN, DHT4TYPE);
DHT dht5(DHT5PIN, DHT5TYPE);
DHT dht6(DHT6PIN, DHT6TYPE);
DHT dht7(DHT7PIN, DHT7TYPE);
DHT dht8(DHT8PIN, DHT8TYPE);
DHT dht9(DHT9PIN, DHT9TYPE);
void setup() {
Serial.begin(9600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin();
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");}
Serial.println("DHTxx test!");
dht2.begin();
dht3.begin();
dht4.begin();
dht5.begin();
dht6.begin();
dht7.begin();
dht8.begin();
dht9.begin();
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(chipSelect, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1) ;
}
Serial.println("card initialized.");
// Open up the file we're going to log to!
dataFile = SD.open("datalog.txt", FILE_WRITE);
if (! dataFile) {
Serial.println("error opening datalog.txt");
// Wait forever since we cant write data
while (1) ;
}}
void loop() {
// Wait a few seconds between measurements.
delay(20000);
DateTime now = rtc.now();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
float h3 = dht3.readHumidity();
float t3 = dht3.readTemperature();
float h4 = dht4.readHumidity();
float t4 = dht4.readTemperature();
float h5 = dht5.readHumidity();
float t5 = dht5.readTemperature();
float h6 = dht6.readHumidity();
float t6 = dht6.readTemperature();
float h7 = dht7.readHumidity();
float t7 = dht7.readTemperature();
float h8 = dht8.readHumidity();
float t8 = dht8.readTemperature();
float h9 = dht9.readHumidity();
float t9 = dht9.readTemperature();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
// Check if any reads failed and exit early (to try again).
if (isnan(h2) || isnan(t2)) {
Serial.println("Failed to read from DHT sensor 2!");
return;
}
Serial.print("Humidity 2: ");
Serial.print(h2);
Serial.print(" %\t");
Serial.print("Temperature 2: ");
Serial.print(t2);
Serial.println(" *C ");
dataFile.print("Humidity 2: ");
dataFile.print(h2);
dataFile.print(" %\t");
dataFile.print("Temperature 2: ");
dataFile.print(t2);
dataFile.println(" *C ");
if (isnan(h3) || isnan(t3)) {
Serial.println("Failed to read from DHT sensor 3!");
return;
}
Serial.print("Humidity 3: ");
Serial.print(h3);
Serial.print(" %\t");
Serial.print("Temperature 3: ");
Serial.print(t3);
Serial.println(" *C ");
if (isnan(h4) || isnan(t4)) {
Serial.println("Failed to read from DHT sensor 4!");
return;
}
Serial.print("Humidity 4: ");
Serial.print(h4);
Serial.print(" %\t");
Serial.print("Temperature 4: ");
Serial.print(t4);
Serial.println(" *C ");
if (isnan(h5) || isnan(t5)) {
Serial.println("Failed to read from DHT sensor 5!");
return;
}
Serial.print("Humidity 5: ");
Serial.print(h5);
Serial.print(" %\t");
Serial.print("Temperature 5: ");
Serial.print(t5);
Serial.println(" *C ");
if (isnan(h6) || isnan(t6)) {
Serial.println("Failed to read from DHT sensor 6!");
return;
}
Serial.print("Humidity 6: ");
Serial.print(h6);
Serial.print(" %\t");
Serial.print("Temperature 6: ");
Serial.print(t6);
Serial.println(" *C ");
if (isnan(h7) || isnan(t7)) {
Serial.println("Failed to read from DHT sensor 7!");
return;
}
Serial.print("Humidity 7: ");
Serial.print(h7);
Serial.print(" %\t");
Serial.print("Temperature 7: ");
Serial.print(t7);
Serial.println(" *C ");
if (isnan(h8) || isnan(t8)) {
Serial.println("Failed to read from DHT sensor 8!");
return;
}
Serial.print("Humidity 8: ");
Serial.print(h8);
Serial.print(" %\t");
Serial.print("Temperature 8: ");
Serial.print(t8);
Serial.println(" *C ");
if (isnan(h9) || isnan(t9)) {
Serial.println("Failed to read from DHT sensor 9!");
return;
}
Serial.print("Humidity 9: ");
Serial.print(h9);
Serial.print(" %\t");
Serial.print("Temperature 9: ");
Serial.print(t9);
Serial.println(" *C ");
}