const int buttonPin = 4; // Pin digital untuk tombol
const int relayPin = 2; // Pin digital untuk mengontrol relay
const int buzzerPin = 3; // Pin digital untuk buzzer
const int greenLedPin = 6; // Pin digital untuk LED hijau
const int redLedPin = 5; // Pin digital untuk LED merah
bool buttonState = false; // Status tombol
bool relayActive = false; // Status relay
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Mengatur pin tombol sebagai input dengan pull-up internal
pinMode(relayPin, OUTPUT); // Mengatur pin relay sebagai output
pinMode(buzzerPin, OUTPUT); // Mengatur pin buzzer sebagai output
pinMode(greenLedPin, OUTPUT); // Mengatur pin LED hijau sebagai output
pinMode(redLedPin, OUTPUT); // Mengatur pin LED merah sebagai output
digitalWrite(relayPin, LOW); // Mematikan relay saat awal
digitalWrite(buzzerPin, LOW); // Mematikan buzzer saat awal
digitalWrite(greenLedPin, LOW); // Mematikan LED hijau saat awal
digitalWrite(redLedPin, LOW); // Mematikan LED merah saat awal
}
void loop() {
buttonState = digitalRead(buttonPin); // Membaca status tombol
if (buttonState == LOW) { // Jika tombol ditekan (nilai LOW)
// Beri suara buzzer 2x saat relay diaktifkan
for (int i = 0; i < 2; i++) {
digitalWrite(buzzerPin, HIGH);
delay(100);
digitalWrite(buzzerPin, LOW);
delay(100);
}
// Aktifkan relay selama 1 jam
digitalWrite(relayPin, HIGH); // Mengaktifkan relay
relayActive = true; // Mengatur status relay menjadi aktif
digitalWrite(greenLedPin, HIGH); // Nyalakan LED hijau untuk menunjukkan relay aktif
digitalWrite(redLedPin, LOW); // Matikan LED merah
unsigned long startTime = millis(); // Waktu mulai tombol ditekan
// Menunggu 1 jam
while (millis() - startTime < 3000) {
// Tambahkan logika tambahan jika perlu, misalnya untuk keperluan lain dalam loop
}
digitalWrite(relayPin, LOW); // Mematikan relay setelah 1 jam
relayActive = false; // Mengatur status relay menjadi tidak aktif
digitalWrite(greenLedPin, LOW); // Matikan LED hijau untuk menunjukkan relay mati
digitalWrite(redLedPin, HIGH); // Nyalakan LED merah
// Beri suara buzzer 1x saat relay dimatikan
digitalWrite(buzzerPin, HIGH);
delay(100);
digitalWrite(buzzerPin, LOW);
delay(1000); // Memberikan jeda setelah bunyi buzzer sebelum mengecek tombol lagi
}
if (relayActive) {
// Tambahan logika atau tindakan jika relay aktif selama 1 jam
}
}