切換
舊版
前往
大廳
主題

arduino 溫濕光度感測

光山アキラやま | 2020-06-05 21:24:26 | 巴幣 4 | 人氣 254

用網路上的程式拼拼補補出來的
可以運作,不過滿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");
  }
  
}

創作回應

更多創作