#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RtcDS3231.h> //RTC library
#include <SPI.h>
#include <SD.h>
#include <Adafruit_SSD1306.h>
#include <SimpleDHT.h>
DHT dht;
File myFile; // สร้างออฟเจก File สำหรับจัดการข้อมูล
//RtcDS3231 rtcObject; //Uncomment for version 1.0.1 of the rtc library
RtcDS3231<TwoWire> rtcObject(Wire); //Uncomment for version 2.0.0 of the rtc library
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int chipSelect = 53; //CS //ss
int Relay1 = 22;
int Relay2 = 23;
int Relay3 = 24;
int Relay4 = 25;
int Relay5 = 26;
int Relay6 = 27;
int Relay7 = 28;
int Relay8 = 29;
///////////////////////////
void setup() {
Serial.println("Sensoren parasitär!!!");
Serial.begin(9600);
Serial.println();
rtcObject.Begin(); //Starts I2C
Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
while (!Serial) {
; // รอจนกระทั่งเชื่อมต่อกับ Serial port แล้ว สำหรับ Arduino Leonardo เท่านั้น
}
dht.setup(4); // data pin 2
Serial.print("Initializing SD card...");
pinMode(SS, OUTPUT);
if (!SD.begin(chipSelect)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
////LCD/////
lcd.begin();
lcd.backlight();
lcd.print("Hello, KSP!");
Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
//RtcDateTime currentTime = RtcDateTime(19, 07, 27, 9, 12, 0); //define date and time object
//rtcObject.SetDateTime(currentTime); //configure the RTC with object
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(Relay4, OUTPUT);
pinMode(Relay5, OUTPUT);
pinMode(Relay6, OUTPUT);
pinMode(Relay7, OUTPUT);
pinMode(Relay8, OUTPUT);
dht.setup(4); // data pin 4
}
//?????? ??????? 1-0 ?????????? 0
void loop() {
delay(dht.getMinimumSamplingPeriod());
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
///////////////////////////////
RtcDateTime currentTime = rtcObject.GetDateTime(); //get the time from the RTC
char str[20]; //declare a string as an array of chars
//////////////////////////////////////
//พัดลมเปิดตลอด
digitalWrite (Relay7, LOW);
delay(1000);
digitalWrite (Relay8, LOW);
delay(1000);
///////////////////////////////////
Serial.print("humidity = ");
Serial.print(humidity , 1);
Serial.print("temperature = ");
Serial.println(temperature, 1);
delay(1000);
/////////////////////////////////
lcd.begin();
lcd.setCursor(8, 0);
lcd.print("H = ");
lcd.setCursor(11, 0);
lcd.print(humidity);
lcd.setCursor(8, 1);
lcd.print("T = ");
lcd.setCursor(11, 1);
lcd.print(temperature);
//lcd.begin();//??????????????
//lcd.setCursor(0, 0); //????????????????
//lcd.print("");
//lcd.setCursor(0, 0);
//lcd.print(str);
sprintf(str, "%d/%d/%d %d:%d:%d", //%d allows to print an integer to the string
currentTime.Year(), //get year method
currentTime.Month(), //get month method
currentTime.Day(), //get day method
currentTime.Hour(), //get hour method
currentTime.Minute(), //get minute method
currentTime.Second() //get second method
);
Serial.println(str); //print the string to the serial port
//////////////////////////////// เก็บข้อมูล ////////////////////////////////////////
myFile = SD.open("dht2.txt", FILE_WRITE); // เปิดไฟล์ที่ชื่อ test.txt เพื่อเขียนข้อมูล โหมด FILE_WRITE
// ถ้าเปิดไฟล์สำเร็จ ให้เขียนข้อมูลเพิ่มลงไป
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.print("STR = ");
myFile.print(str);
myFile.print(" , ");
myFile.print("humidity = ");
myFile.print(humidity);
myFile.print(" , ");
myFile.print("temperature = ");
myFile.println(temperature);// สั่งให้เขียนข้อมูล
myFile.close(); // ปิดไฟล์
Serial.println("done.");
} else {
// ถ้าเปิดไฟลืไม่สำเร็จ ให้แสดง error
Serial.println("error opening test.txt");
}
// เปิดไฟล์เพื่ออ่าน
myFile = SD.open("dht2.txt"); // สั่งให้เปิดไฟล์ชื่อ test.txt เพื่ออ่านข้อมูล
if (myFile) {
Serial.println("test.txt:");
// อ่านข้อมูลทั้งหมดออกมา
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close(); // เมื่ออ่านเสร็จ ปิดไฟล์
} else {
// ถ้าอ่านไม่สำเร็จ ให้แสดง error
Serial.println("error opening test.txt");
}
/////////////////////////////////////////////////////////////////////////////////////
if (temperature > 26) {
digitalWrite (Relay1, LOW);
}
else
{
digitalWrite (Relay1, HIGH);
}
if (humidity < 55) {
digitalWrite (Relay2, LOW);
}
else
{
digitalWrite (Relay2, HIGH);
}
if (temperature > 29) {
digitalWrite (Relay3, LOW);
}
else
{
digitalWrite (Relay3, HIGH);
}
if (temperature > 31) {
digitalWrite (Relay4, LOW);
digitalWrite (Relay5, LOW);
digitalWrite (Relay6, LOW);
}
else
{
digitalWrite (Relay4, HIGH);
digitalWrite (Relay5, HIGH);
digitalWrite (Relay6, HIGH);
}
}
พอมีวิธีแก้ไหมครับ ผมเพิ่งซื้อ mega r3 มา ผมหาวิธีแก้หลายวิธีและไม่ได้สักที
คอมไพล์ยังไม่ผ่าน ในนี้แจ้งว่าไลบารีซ้ำกัน ลบไลบารีที่ซ้ำกันออก แล้วลงไลบารีให้ถูกต้องก็จะใช้ได้ครับ