#include <Arduino.h>
#include <DFPlayerMini_Fast.h>
#include <Stepper.h>
// Definisi pin yang digunakan
#define PIN_START 2
#define PIN_HOME 3
#define PIN_LIMIT_SWITCH 4
#define PIN_RELAY_POMPA_1 5
#define PIN_RELAY_POMPA_2 6
#define PIN_RELAY_UAP 7
#define PIN_LED_KUNING 8
#define PIN_LED_PUTIH 9
#define PIN_STEPPER_STEP 10
#define PIN_STEPPER_DIR 11
#define DFPLAYER_RX 12
#define DFPLAYER_TX 13
DFPlayerMini_Fast myDFPlayer;
Stepper myStepper(200, PIN_STEPPER_STEP, PIN_STEPPER_DIR);
void setup() {
pinMode(PIN_START, INPUT_PULLUP);
pinMode(PIN_HOME, INPUT_PULLUP);
pinMode(PIN_LIMIT_SWITCH, INPUT_PULLUP);
pinMode(PIN_RELAY_POMPA_1, OUTPUT);
pinMode(PIN_RELAY_POMPA_2, OUTPUT);
pinMode(PIN_RELAY_UAP, OUTPUT);
pinMode(PIN_LED_KUNING, OUTPUT);
pinMode(PIN_LED_PUTIH, OUTPUT);
digitalWrite(PIN_LED_KUNING, HIGH);
digitalWrite(PIN_LED_PUTIH, HIGH);
Serial.begin(9600);
myDFPlayer.begin(Serial);
myDFPlayer.volume(30); // Sesuaikan dengan level volume yang diinginkan
}
void loop() {
if (digitalRead(PIN_START) == LOW) {
strobeLEDs();
myDFPlayer.play(1); // Memutar suara mp3 no 0001
delay(35000); // Delay 35 detik
myDFPlayer.play(2); // Memutar suara mp3 no 0002
digitalWrite(PIN_LED_PUTIH, LOW); // Lampu putih menyala
digitalWrite(PIN_RELAY_POMPA_1, HIGH); // RELAY pompa 1 menyala terus tanpa berhenti
digitalWrite(PIN_LED_KUNING, HIGH); // LED kuning menyala
delay(5000); // Delay 5 detik
myDFPlayer.play(3); // Memutar suara mp3 no 0003
delay(25000); // Delay 25 detik
digitalWrite(PIN_RELAY_UAP, HIGH); // RELAY uap menyala
digitalWrite(PIN_LED_KUNING, HIGH); // LED kuning tetap menyala
digitalWrite(PIN_RELAY_POMPA_1, HIGH); // RELAY pompa 1 tetap menyala
delay(5000); // Delay 5 detik
myDFPlayer.play(4); // Memutar suara mp3 no 0004
delay(30000); // Delay 30 detik
digitalWrite(PIN_LED_PUTIH, HIGH); // Lampu putih menyala
digitalWrite(PIN_LED_KUNING, LOW); // Lampu kuning mati
while (digitalRead(PIN_LIMIT_SWITCH) == HIGH) {
myStepper.step(1);
delay(10);
}
digitalWrite(PIN_RELAY_POMPA_1, HIGH); // RELAY pompa 1 tetap menyala
delay(5000); // Delay 5 detik
myDFPlayer.play(5); // Memutar suara mp3 no 0005
delay(25000); // Delay 25 detik
// Implementasikan berkedip kedip lampu led putih sesuai skenario
// ...
digitalWrite(PIN_RELAY_POMPA_2, HIGH); // RELAY pompa 2 menyala
digitalWrite(PIN_LED_PUTIH, HIGH); // Lampu putih tetap menyala
delay(5000); // Delay 5 detik
myDFPlayer.play(6); // Memutar suara mp3 no 0006
digitalWrite(PIN_RELAY_POMPA_1, HIGH); // RELAY pompa 1 tetap menyala
digitalWrite(PIN_RELAY_POMPA_2, HIGH); // RELAY pompa 2 tetap menyala
digitalWrite(PIN_LED_PUTIH, HIGH); // Lampu putih tetap berkedip cepat
delay(5000); // Delay 5 detik
myDFPlayer.play(7); // Memutar suara mp3 no 0007
delay(1000); // Delay 1 detik
digitalWrite(PIN_LED_PUTIH, LOW); // Semua led putih padam
digitalWrite(PIN_LED_KUNING, LOW); // Semua led kuning padam
digitalWrite(PIN_RELAY_POMPA_1, LOW); // RELAY pompa 1 mati
digitalWrite(PIN_RELAY_POMPA_2, LOW); // RELAY pompa 2 mati
digitalWrite(PIN_RELAY_UAP, LOW); // RELAY uap mati
}
if (digitalRead(PIN_HOME) == LOW) {
strobeLEDs();
while (digitalRead(PIN_LIMIT_SWITCH) == HIGH) {
myStepper.setSpeed(1000);
myStepper.step(-200);
delay(10);
}
myStepper.setSpeed(200);
delay(500);
digitalWrite(PIN_LED_KUNING, HIGH);
digitalWrite(PIN_LED_PUTIH, HIGH);
digitalWrite(PIN_RELAY_POMPA_1, LOW);
digitalWrite(PIN_RELAY_POMPA_2, LOW);
digitalWrite(PIN_RELAY_UAP, LOW);
}
}
void strobeLEDs() {
for (int i = 0; i < 10; i++) {
digitalWrite(PIN_LED_PUTIH, HIGH);
digitalWrite(PIN_LED_KUNING, LOW);
delay(200);
digitalWrite(PIN_LED_PUTIH, LOW);
digitalWrite(PIN_LED_KUNING, HIGH);
delay(200);
}
}
void blinkLED(int pin, int times, int delayTime) {
for (int i = 0; i < times; i++) {
digitalWrite(pin, HIGH);
delay(delayTime);
digitalWrite(pin, LOW);
delay(delayTime);
}
}