前回、保存するための回路も作成したのでDHT22で取得したデータをSDカードに保存してみます。
ソースコード
//
// FILE: SDCard_Save.ino
// PURPOSE: DHT22 + SDCard test sketch for Arduino
//
// SD card attached to SPI bus as follows:
// CS - pin 10
// MOSI(DI) - pin 11
// MISO(DO) - pin 12
// SCK(CLK) - pin 13
#include <SD.h>
#include <dht22.h>
DHT22 DHT;
#define DHT22_PIN 2
#define SD_CS_PIN 10
#define SD_DI_PIN 11
#define SD_DO_PIN 12
#define SD_CL_PIN 13
void setup()
{
Serial.begin(115200);
Serial.print("Initializing SD card...");
pinMode(SD_CS_PIN, OUTPUT);
while (!SD.begin(SD_CS_PIN)) {
Serial.println("Card failed, or not present!");
delay(30000);
}
Serial.println("Card initialized.");
Serial.print("DHT22 LIBRARY VERSION: ");
Serial.println(DHT22_LIB_VERSION);
Serial.println();
Serial.println("State,\tTemperature (C),\tHumidity (%),\tDewpoint (C)");
delay(2000); // Waits until a sensor is stabilized.
}
void loop()
{
// Read Data
int chk = DHT.get(DHT22_PIN);
String dataString="";
switch (chk)
{
case DHT22_OK:
char s[5];
dtostrf(DHT.temperature, -1, 1, s);
dataString += s;
dataString += ",";
dtostrf(DHT.humidity, -1, 1, s);
dataString += s;
dataString += ",";
dtostrf(DHT.dewpoint, -1, 1, s);
dataString += s;
PrintToFile(dataString);
break;
case DHT22_ERROR_CHECKSUM:
PrintToFile("Checksum error,\t");
break;
case DHT22_ERROR_TIMEOUT:
PrintToFile("Time out error,\t");
break;
default:
PrintToFile("Unknown error,\t");
break;
}
delay(10000);
}
// Subroutine for writing data in SD card, SDカードへのデータ書き込みのためのサブルーチン
void PrintToFile(String dataIn){
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(dataIn);
dataFile.close();
Serial.println(dataIn);
}
else {
Serial.println("error opening file");
}
}
[wpdm_file id=4]

