// Definisikan pin untuk relay control
const int relayPins[] = {2, 3, 4, 5, 6, 7};
// Definisikan pin untuk push button
const int pausePlayButtonPin = 8;
const int changeCaseButtonPin = 9;
// Variabel untuk menentukan state program
int currentCase = 2; // Awalnya program berada di case 1
bool isPaused = false; // Program tidak di-pause awalnya
void setup() {
// Set relay pins sebagai output
for (int i = 0; i < 6; i++) {
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], LOW); // Matikan semua relay saat booting
}
// Set push button pins sebagai input dengan pull-up resistor
pinMode(pausePlayButtonPin, INPUT_PULLUP);
pinMode(changeCaseButtonPin, INPUT_PULLUP);
}
void loop() {
// Baca status push button pause/play
if (digitalRead(pausePlayButtonPin) == LOW) {
// Jika push button ditekan, toggle isPaused
isPaused = !isPaused;
delay(200); // Debouncing delay
}
// Baca status push button change case
if (digitalRead(changeCaseButtonPin) == LOW) {
// Jika push button ditekan, naikkan nilai currentCase
currentCase++;
if (currentCase > 6) {
currentCase = 1; // Kembali ke case 1 jika sudah melewati case 6
}
delay(200); // Debouncing delay
}
// Jalankan program relay berdasarkan currentCase jika tidak di-pause
if (!isPaused) {
switch(currentCase) {
case 1:
runCase1();
break;
case 2:
turnOffAllRelays();
break;
case 3:
setRelayState(3, HIGH); // Hidupkan relay 3
break;
case 4:
setRelayState(4, HIGH); // Hidupkan relay 4
break;
case 5:
setRelayState(5, HIGH); // Hidupkan relay 5
break;
case 6:
setRelayState(6, HIGH); // Hidupkan relay 6
break;
}
} else {
// Matikan semua relay jika program di-pause
turnOffAllRelays();
}
}
// Fungsi untuk mengatur keadaan relay
void setRelayState(int relayIndex, int state) {
digitalWrite(relayPins[relayIndex - 1], state); // relayIndex dimulai dari 1, sedangkan array dimulai dari 0
}
// Fungsi untuk mematikan semua relay
void turnOffAllRelays() {
for (int i = 0; i < 6; i++) {
digitalWrite(relayPins[i], LOW);
}
}
// Fungsi untuk menjalankan case 1 (contoh)
void runCase1() {
digitalWrite(relayPins[0], HIGH);delay(300);
digitalWrite(relayPins[0], LOW);delay(300);
digitalWrite(relayPins[0], HIGH);delay(300);
digitalWrite(relayPins[0], LOW);delay(300);
digitalWrite(relayPins[1], HIGH);delay(600);
digitalWrite(relayPins[1], LOW);delay(200);
digitalWrite(relayPins[0], HIGH);delay(600);
digitalWrite(relayPins[0], LOW);delay(1200);
digitalWrite(relayPins[0], HIGH);delay(300);
digitalWrite(relayPins[0], LOW);delay(300);
digitalWrite(relayPins[0], HIGH);delay(300);
digitalWrite(relayPins[0], LOW);delay(300);
digitalWrite(relayPins[1], HIGH);delay(300);
digitalWrite(relayPins[1], LOW);delay(300);
digitalWrite(relayPins[1], HIGH);delay(300);
digitalWrite(relayPins[1], LOW);delay(300);
digitalWrite(relayPins[3], HIGH);delay(300);
digitalWrite(relayPins[3], LOW);delay(200);
digitalWrite(relayPins[2], HIGH);delay(300);
digitalWrite(relayPins[2], LOW);delay(200);
digitalWrite(relayPins[0], HIGH);delay(300);
digitalWrite(relayPins[0], LOW); delay(200);
digitalWrite(relayPins[1], HIGH);delay(300);
digitalWrite(relayPins[1], LOW);delay(1200);
// Lanjutkan dengan kombinasi relay yang sesuai untuk case 1
}