前回、保存するための回路も作成したので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]