用網路上的程式拼拼補補出來的
可以運作,不過滿clunky的
下一步是要把資料轉化成CSV格式才能與EXCEL整合
然後採樣時間也要改一下。
雨量計的部分可能需要用到第二塊版子了
//感光元件
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
//溫濕度
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
//記憶卡
#include <SD.h>
#include <SPI.h>
#include "SdFat.h"
//MOSI11 MISO12 SCK13
#define SD_CS_PIN SS
File myFile;
//宣告myFile是一個檔案
//DS1302 時鐘模組
//接腳
#include <DS1302.h>
// 初始化DS1302
// DS1302 rtc([RST], [DAT], [CLOCK]); 三個pin的接法
DS1302 rtc(9, 8, 7);
void setup() {
Serial.begin(9600);
Wire.begin();lightMeter.begin(); //感光初始
dht.begin(); //溫濕度初始
Serial.print("Initializing SD card...");
//判斷SD模組初始化是否成功
if (!SD.begin(SD_CS_PIN)) {
Serial.println("initialization failed!");
return; }
Serial.println("initialization done.");
//打開一個檔名為test.txt的檔案,模式為寫入(FILE_WRITE)
//若檔案不存在,就會自動建議一個新的檔案
myFile = SD.open("test.txt", FILE_WRITE);
// 如果成功打開,就寫入文字
if (myFile) {
myFile.println("成功初始化一次");
myFile.close();
} else {
// 如果無法開啟檔案,就在監控視窗顯示訊息
Serial.println("error opening test.txt");
}
//讀取打開test.txt
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("文件內容如下");
//一直讀取檔案內容,直到沒有為止
while (myFile.available()) {
Serial.write(myFile.read()); //把讀到的內容顯示在監控視窗
}
// 關閉檔案
myFile.close();
} else {
// 如果無法開啟檔案,就在監控視窗顯示訊息
Serial.println("error can't open file");
}
// 設定時鐘為正常執行模式
rtc.halt(false);
}
void loop() {
float lux = lightMeter.readLightLevel();//測光
float h = dht.readHumidity();//測濕度
float t = dht.readTemperature();//測溫度
delay (3000);
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
Serial.print("將以下資訊寫入");
Serial.println("日期");
Serial.print(rtc.getDOWStr());Serial.print(" ");Serial.print(rtc.getDateStr());Serial.print(" -- ");Serial.println(rtc.getTimeStr());
myFile.print(rtc.getDOWStr());myFile.print(" ");myFile.print(rtc.getDateStr());myFile.print(" -- ");myFile.println(rtc.getTimeStr());
Serial.print(lux);Serial.println(" lx");
myFile.print(lux);myFile.println(" lx");
Serial.print("濕度: "); Serial.println(h);
myFile.print("濕度: "); myFile.println(h);
Serial.print("溫度: "); Serial.print(t);Serial.println("°C ");
myFile.print("溫度: "); myFile.print(t);myFile.println("°C ");
myFile.close(); //關閉檔案
} else {
Serial.println("error opening test.txt");
}
}