// Define pin
const int relayPin = 3;
const int relayNotif = 2;
const int ledPin = 13;
const int relayPinout = 8;
const int relayNotifOut = 7;
int previousRelayStatus = LOW;
bool isConsistent = false;
int currentRelayStatus = LOW;
unsigned long relayOnTime = 0;
unsigned long relayOffTime = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(relayPin, INPUT);
pinMode(relayNotif, INPUT);
pinMode(relayNotifOut, OUTPUT);
pinMode(relayPinout, OUTPUT);
}
// Pull Down Mode
void loop() {
currentRelayStatus = digitalRead(relayPin);
unsigned long currentMillis = millis();
// Debug pinout relay input
Serial.print("Relay pin nilai:");
Serial.println(currentRelayStatus);
Serial.print("Relay pin nilai sebelum:");
Serial.println(previousRelayStatus);
Serial.print("isConsistent nilai:");
Serial.println(isConsistent);
Serial.print("R out nilai:");
Serial.println(relayPinout);
if (currentRelayStatus != previousRelayStatus)
{
previousRelayStatus = currentRelayStatus;
if (currentRelayStatus == HIGH) {
relayOnTime = currentMillis;
isConsistent = true;
} else {
relayOffTime = currentMillis;
isConsistent = false;
}
}
if (isConsistent && currentRelayStatus == HIGH) {
if (currentMillis - relayOnTime >= 15000) {
Serial.println("Relay nyala selama 15 detik");
digitalWrite(ledPin, LOW);
digitalWrite(relayPinout, LOW);
Serial.print("Air Penuh");
isConsistent = false;
}
}
if (isConsistent == false && currentRelayStatus == LOW) {
if (millis() - relayOffTime >= 5000) {
Serial.println("Relay mati selama 5 detik");
digitalWrite(ledPin, HIGH);
digitalWrite(relayPinout, HIGH);
Serial.print("Mengisi Air...");
isConsistent = true;
}
}
delay(2000);
}