พอดีทำโปรเจค ตั้งเวลาเปิดปิดน้ำค่ะ แต่ว่าเวลามันรวน ไม่ทราบว่าผิดพลาดตรงไหน ต้องแก้ไขยังไงค่ะ
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"
#define DHTPIN D7
#define DHTTYPE DHT22
#include <Wire.h>
#include <SPI.h>
#include <RTClib.h>
char auth[] = "Paj1PW3CchLB17V194UWKgB_uAKB9WEk";
char ssid[] = "vivo 1935";
char pass[] = "kaaj080341";
DHT dht(DHTPIN, DHTTYPE);
RTC_DS3231 RTC;
const int TimeOnHour = 13;
const int TimeOnMin = 44;
const int TimeOffHour = 13;
const int TimeOffMin = 45;
const int TimeOnHour1 = 13;
const int TimeOnMin1 = 16;
const int TimeOffHour1 = 13;
const int TimeOffMin1 =46;
const int TimeOnHour2 = 13;
const int TimeOnMin2 = 18;
const int TimeOffHour2 = 13;
const int TimeOffMin2 =19;
WidgetLED led(V0);
WidgetLED led1(V1);
WidgetLED led2(V2);
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass,"oasiskit.com",8080);
dht.begin();
pinMode(0,OUTPUT);//ปั้ม D3
pinMode(2,OUTPUT);//พัดลม D4
pinMode(5,OUTPUT);//ปั้มน้ำหยด D1
pinMode(14,OUTPUT);//วาล์ว1 D5
pinMode(12,OUTPUT);//วาล์ว2 D6
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__)); //จุดนี้เป็นการตั้งเวลา ตั้งครั้งแรกเสร็จแล้วให้ // ไว้ด้วย
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
DateTime now = RTC.now();
RTC.setAlarm1Simple(21, 58); //เป็นการตั้งเวลาปลุก เวลา 22.58 น.
RTC.turnOnAlarm(1); //ปลุกช่วงเวลาที่ 1
if (RTC.checkAlarmEnabled(1)) {
Serial.println("Alarm Enabled");
}
}
void loop() {
Blynk.run();
delay(500);
dht22();
RTC_Time();
}
void dht22() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
if ( t <= 29) {//เงื่อนไขความชื้น
digitalWrite(2, 1);//ปั๊มน้ำ //digitalWrite(relay1,LOW ); //ปั๊มน้ำ
digitalWrite(0, 1);//พัดลม //digitalWrite(relay2,LOW );//พัดลม
Serial.println("พัดลม และ น้ำหยุด ทำงาน");
}
else {
digitalWrite(2, 0);//digitalWrite(relay1, HIGH); //ปั๊มน้ำ
digitalWrite(0, 0);//digitalWrite(relay2, HIGH); //พัดลม
Serial.println("พัดลม และ น้ำหยด ทำงาน");
}
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.println(F("°C "));
Blynk.virtualWrite(V5,t);
Blynk.virtualWrite(V6,h);
Serial.println();
}
void RTC_Time(){
DateTime now = RTC.now();
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(':');
Serial.print(now.second());
Serial.println();
delay (1000);
digitalWrite(5, 1);
digitalWrite(14, 0);
digitalWrite(12, 0);
// ตั้งเวลาแบบกำหนดเช็ค if เอง
if (now.hour() == TimeOnHour && now.minute() == TimeOnMin ) { //ถ้าชั่วโมงเท่ากับ 0 และนาทีเท่ากับ 53 จะสั่งให้เปิดไฟ LED
digitalWrite(5, 0);
digitalWrite(14, 1);
digitalWrite(12, 1);
Serial.println("ระบบน้ำหยด++++เช้า");
led.on();
led1.on();
led2.on();
}
else if (now.hour() == TimeOffHour && now.minute() == TimeOffMin )
{
digitalWrite(5, 1);
digitalWrite(14, 0);
digitalWrite(12, 0);
Serial.println("ระบบน้ำหยด-----เช้า");
led.off();
led1.off();
led2.off();
}
else if (now.hour() == TimeOnHour1 && now.minute() == TimeOnMin1 )
{
digitalWrite(5, 0);
digitalWrite(14, 1);
digitalWrite(12, 1);
Serial.println("ระบบน้ำหยด++++บ่าย");
led.on();
led1.on();
led2.on();
}
else if (now.hour() == TimeOffHour1 && now.minute() == TimeOffMin1 )
{
digitalWrite(5, 1);
digitalWrite(14, 0);
digitalWrite(12, 0);
Serial.println("ระบบน้ำหยด-----บ่าย");
led.off();
led1.off();
led2.off();
}
else if (now.hour() == TimeOnHour2 && now.minute() == TimeOnMin2 )
{
digitalWrite(5, 0);
digitalWrite(14, 1);
digitalWrite(12, 1);
Serial.println("ระบบน้ำหยด++++เย็น");
led.on();
led1.on();
led2.on();
}
else if (now.hour() == TimeOffHour2 && now.minute() == TimeOffMin2 )
{
digitalWrite(5, 1);
digitalWrite(14, 1);
digitalWrite(12, 1);
Serial.println("ระบบน้ำหยด-----เย็น");
led.off();
led1.off();
led2.off();
}
else{
digitalWrite(5, 1);
digitalWrite(14, 1);
digitalWrite(12, 1);
}
Serial.println();
delay(1000);
}
Remy_Martin (Permpol Thanapunnamas) June 30, 2020, 2:31am #4
ต่อโมดูลแบบไหนขอดูด้วยครับ