#include <Arduino.h>
// Pin configuration
const int PLN_STATUS_PIN = 21;
const int GENSET_STATUS_PIN = 19;
const int MODE_PIN = 18;
const int SWITCH_PIN = 5;
const int RELAY_CONTACT_PIN = 13;
const int RELAY_STARTER_PIN = 12;
// Variables
bool isPlnOn = true;
bool isGensetOn = false;
bool isAutoMode = true;
bool isSwitchOn = false;
void setup() {
pinMode(PLN_STATUS_PIN, INPUT);
pinMode(GENSET_STATUS_PIN, INPUT);
pinMode(MODE_PIN, INPUT);
pinMode(SWITCH_PIN, INPUT);
pinMode(RELAY_CONTACT_PIN, OUTPUT);
pinMode(RELAY_STARTER_PIN, OUTPUT);
}
void loop() {
isPlnOn = digitalRead(PLN_STATUS_PIN);
isGensetOn = digitalRead(GENSET_STATUS_PIN);
isAutoMode = digitalRead(MODE_PIN);
isSwitchOn = digitalRead(SWITCH_PIN);
if (isAutoMode) {
if (!isPlnOn) {
digitalWrite(RELAY_CONTACT_PIN, HIGH);
delay(1000);
while (!isGensetOn) {
digitalWrite(RELAY_STARTER_PIN, HIGH);
delay(3000);
digitalWrite(RELAY_STARTER_PIN, LOW);
delay(1000);
isGensetOn = digitalRead(GENSET_STATUS_PIN);
}
}
else {
digitalWrite(RELAY_CONTACT_PIN, LOW);
digitalWrite(RELAY_STARTER_PIN, LOW);
}
}
else {
if (isSwitchOn) {
digitalWrite(RELAY_CONTACT_PIN, HIGH);
delay(1000);
while (!isGensetOn) {
digitalWrite(RELAY_STARTER_PIN, HIGH);
delay(3000);
digitalWrite(RELAY_STARTER_PIN, LOW);
delay(1000);
isGensetOn = digitalRead(GENSET_STATUS_PIN);
}
}
else {
digitalWrite(RELAY_CONTACT_PIN, LOW);
digitalWrite(RELAY_STARTER_PIN, LOW);
}
}
}