Ds3231 โมดูลนาฬิกา รวนค่ะแก้ยังไงคะ

พอดีทำโปรเจค ตั้งเวลาเปิดปิดน้ำค่ะ แต่ว่าเวลามันรวน ไม่ทราบว่าผิดพลาดตรงไหน ต้องแก้ไขยังไงค่ะ

ภาพ

#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

ต่อโมดูลแบบไหนขอดูด้วยครับ