/*
==== PRINSIP KERJA RANGKAIAN ====
1. Push buttonon on ditekan, maka akan menghidupkan relay selama 10 detik, kemudian relay mati
2. Push button off ditekan maka relay akan mati seketika itu juga
*/
const int buttonOnPin = 2; // pin untuk push button on
const int buttonOffPin = 3; // pin untuk push button off
const int relayPin = 4; // pin untuk relay
int buttonOnState = 0; // variabel untuk menyimpan status push button on
int buttonOffState = 0; // variabel untuk menyimpan status push button off
int relayState = LOW; // variabel untuk menyimpan status relay
unsigned long previousMillis = 0; // variabel untuk menyimpan waktu sebelumnya
const long interval = 10000; // variabel untuk menyimpan interval waktu
void setup() {
pinMode(buttonOnPin, INPUT_PULLUP); // mengatur pin push button on sebagai input pullup
pinMode(buttonOffPin, INPUT_PULLUP); // mengatur pin push button off sebagai input pullup
pinMode(relayPin, OUTPUT); // mengatur pin relay sebagai output
}
void loop() {
buttonOnState = digitalRead(buttonOnPin); // membaca status push button on
buttonOffState = digitalRead(buttonOffPin); // membaca status push button off
if (buttonOnState == LOW) {
// Jika push button on ditekan, maka relay akan hidup selama 10 detik
relayState = HIGH;
previousMillis = millis();
} else if (buttonOffState == LOW) {
// Jika push button off ditekan, maka relay akan mati seketika
relayState = LOW;
}
// mengatur status relay berdasarkan nilai relayState
digitalWrite(relayPin, relayState);
// mematikan relay setelah 10 detik
unsigned long currentMillis = millis();
if (relayState == HIGH && currentMillis - previousMillis >= interval) {
relayState = LOW;
digitalWrite(relayPin, relayState);
}
}