#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// Definisi pin
const int relay1Pin = 2;
const int relay2Pin = 3;
const int solenoidValvePin = 4;
const int buttonPin = 5;
const int servoPin = 6;
const int buzzerPin = 7;
// Inisialisasi Servo
Servo myServo;
// Inisialisasi LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variabel untuk menyimpan status tombol
bool buttonPressed = false;
void setup() {
// Setup pin
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(solenoidValvePin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Inisialisasi Servo
myServo.attach(servoPin);
myServo.write(180); // Default servo position
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Tampilkan pesan awal
lcd.setCursor(0, 0);
lcd.print("Mesin Cuci Siap");
lcd.setCursor(0, 1);
lcd.print("Tekan START");
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
buttonPressed = true;
}
if (buttonPressed) {
buttonPressed = false;
// Step 1: Mengisi air
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("MENGISI AIR ");
digitalWrite(solenoidValvePin, HIGH);
delay(1200); // Delay 120 detik (2 menit) aslinya 120000
//digitalWrite(solenoidValvePin, LOW);
// Step 2: Menggiling baju mensucikan
lcd.setCursor(0, 0);
lcd.print("MENSUCIKAN 1 ");
lcd.setCursor(0, 1);
lcd.print("MENGGILING BAJU ");
digitalWrite(relay1Pin, HIGH);
delay(10000); // Relay 1 ON selama 10 detik
digitalWrite(relay1Pin, LOW);
delay(3000); // Delay 3 detik
digitalWrite(relay2Pin, HIGH);
delay(10000); // Relay 2 ON selama 10 detik
digitalWrite(relay2Pin, LOW);
// Step 3: Luberin air
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("LUBERIN AIR ");
digitalWrite(solenoidValvePin, HIGH);
delay(1200); // Delay 120 detik (2 menit) aslinya 120000
// Step 4: Menggiling baju mensucikan
lcd.setCursor(0, 0);
lcd.print("MENSUCIKAN 2 ");
lcd.setCursor(0, 1);
lcd.print("MENGGILING BAJU ");
digitalWrite(relay1Pin, HIGH);
delay(10000); // Relay 1 ON selama 10 detik
digitalWrite(relay1Pin, LOW);
delay(3000); // Delay 3 detik
digitalWrite(relay2Pin, HIGH);
delay(10000); // Relay 2 ON selama 10 detik
digitalWrite(relay2Pin, LOW);
// Step 5: Mematikan air
digitalWrite(solenoidValvePin, LOW);
// Step 6: Membuang air
lcd.setCursor(0, 0);
lcd.print("MEMBUANG AIR ");
lcd.setCursor(0, 1);
lcd.print("MOHON DITUNGGU ");
myServo.write(90);
delay(3000); // Delay 300 detik (5 menit)
myServo.write(180);
// Step 7: Mengisi air
lcd.setCursor(0, 0);
lcd.print("MENGISI AIR ");
lcd.setCursor(0, 1);
lcd.print("UNTUK MENCUCI ");
digitalWrite(solenoidValvePin, HIGH);
delay(1200); // Delay 120 detik (2 menit) aslinya 120000
digitalWrite(solenoidValvePin, LOW);
// Step 8: Masukkan sabun cuci
lcd.setCursor(0, 0);
lcd.print("MASUKKAN ");
lcd.setCursor(0, 1);
lcd.print("SABUN CUCI ");
for (int i = 0; i < 3; i++) {
digitalWrite(buzzerPin, HIGH);
delay(2000); // Buzzer ON 2 detik
digitalWrite(buzzerPin, LOW);
delay(1000); // Buzzer OFF 1 detik
digitalWrite(buzzerPin, HIGH);
delay(2000); // Buzzer ON 2 detik
digitalWrite(buzzerPin, LOW);
}
// Step 9: Menggiling baju selama 7 menit
lcd.setCursor(0, 0);
lcd.print("MENGGILING BAJU ");
lcd.setCursor(0, 1);
lcd.print("SELAMA 7 MENIT ");
for (int i = 0; i < 1; i++) { //aslinya melakukan pengulangan sebanyak 14
digitalWrite(relay1Pin, HIGH);
delay(10000); // Relay 1 ON 10 detik
digitalWrite(relay1Pin, LOW);
delay(3000); // Delay 3 detik
digitalWrite(relay2Pin, HIGH);
delay(10000); // Relay 2 ON 10 detik
digitalWrite(relay2Pin, LOW);
delay(3000); // Delay 3 detik
}
// Step 10: Merendam baju
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("MERENDAM BAJU ");
delay(3000); // Delay 300 detik (5 menit) aslinya 300rb
// Step 11: Membuang air
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("MEMBUANG AIR ");
myServo.write(90);
delay(3000); // Delay 300 detik (5 menit) aslinya 300rb
myServo.write(180);
// Step 12: Mengisi air
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("MENGISI AIR ");
digitalWrite(solenoidValvePin, HIGH);
delay(1200); // Delay 120 detik (2 menit) aslinya 120000
digitalWrite(solenoidValvePin, LOW);
// Step 13: Mode bilas 1
lcd.setCursor(0, 0);
lcd.print("MODE BILAS 1 ");
lcd.setCursor(0, 1);
lcd.print("SABAR YA :D ");
for (int i = 0; i < 1; i++) { //nilai aslinya 3
digitalWrite(relay1Pin, HIGH);
delay(10000); // Relay 1 ON 10 detik
digitalWrite(relay1Pin, LOW);
delay(3000); // Delay 3 detik
digitalWrite(relay2Pin, HIGH);
delay(10000); // Relay 2 ON 10 detik
digitalWrite(relay2Pin, LOW);
delay(3000); // Delay 3 detik
}
// Step 14: Membuang air
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("MEMBUANG AIR ");
myServo.write(90);
delay(3000); // Delay 300 detik (5 menit) 300rb
myServo.write(180);
// Step 15: Mode bilas 2
lcd.setCursor(0, 0);
lcd.print("MODE BILAS 2 ");
lcd.setCursor(0, 1);
lcd.print("SABAR YA :D ");
for (int i = 0; i < 1; i++) { //nilai aslinya 3
digitalWrite(relay1Pin, HIGH);
delay(10000); // Relay 1 ON 10 detik
digitalWrite(relay1Pin, LOW);
delay(3000); // Delay 3 detik
digitalWrite(relay2Pin, HIGH);
delay(10000); // Relay 2 ON 10 detik
digitalWrite(relay2Pin, LOW);
delay(3000); // Delay 3 detik
}
// Step 16: Membuang air
lcd.setCursor(0, 0);
lcd.print("SEDANG ");
lcd.setCursor(0, 1);
lcd.print("MEMBUANG AIR ");
myServo.write(90);
delay(3000); // Delay 300 detik (5 menit) 300rb
myServo.write(180);
// Step 17: Mengisi air untuk parfum
lcd.setCursor(0, 0);
lcd.print("MENGISI AIR ");
lcd.setCursor(0, 1);
lcd.print("PERSIAPAN PARFUM");
digitalWrite(solenoidValvePin, HIGH);
delay(60000); // Delay 60 detik (1 menit)
digitalWrite(solenoidValvePin, LOW);
// Step 18: Masukkan pewangi
lcd.setCursor(0, 0);
lcd.print("MASUKKAN ");
lcd.setCursor(0, 1);
lcd.print("PEWANGI ");
digitalWrite(buzzerPin, HIGH);
delay(5000); // Buzzer ON 5 detik
digitalWrite(buzzerPin, LOW);
// Step 19: Proses cuci selesai
lcd.setCursor(0, 0);
lcd.print("PROSES CUCI ");
lcd.setCursor(0, 1);
lcd.print("TELAH SELESAI ");
}
}