#include <LiquidCrystal_I2C.h>
#include <Wire.h>
const int pinStart = 3; //pin button mulai
const int pinReset = 2; // pin button reset
const int pinLedHijau = 4; // LED hijau
const int pinLedMerah = 5; //LED merah
const int pinLedKuning = 12;
const int pinLedBiru = 13;
const int pinLedUngu = A2;
const int pinBuzzer = 6; // Bunyi Alarm
const int pinRelay1 = 7; // Relay urine
const int pinRelay2 = 8; // relay bittern
const int pinRelay3 = 9; //relay motor
const int pinTrig = 10; // untuk trig ultrasonic
const int pinEcho = 11; //untuk echo ultrasonic
long timer;
int jarak;
int tombolStart = 0;//pendefinisian awal tombol start
int tombolReset = 0;//pendefinisian awal tombol reset
LiquidCrystal_I2C lcd(0x27, 16, 2); //pemanggilan alamat lcd 16 x 2
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.init(); // untuk strat LCD
lcd.backlight(); // unntuk hidupkan LCD
pinMode (pinStart, INPUT_PULLUP);// untuk button start
pinMode (pinReset, INPUT_PULLUP);// untuk button Reset
pinMode (pinLedHijau, OUTPUT);//untuk LED Hijau
pinMode (pinLedKuning, OUTPUT);//untuk LED kuning
pinMode (pinLedBiru, OUTPUT);//untuk LED Hijau
pinMode (pinLedUngu, OUTPUT);//untuk LED Hijau
pinMode (pinLedMerah, OUTPUT);// untuk LED merah
pinMode (pinBuzzer, OUTPUT);// untuk bunyi alarm
pinMode (pinRelay1, OUTPUT);// untuk relay urine
pinMode (pinRelay2, OUTPUT);// untuk relay bittern
pinMode (pinRelay3, OUTPUT); // untuk relay motor
pinMode (pinEcho, INPUT); //mendeteksi jarak dari ultrasonic
pinMode (pinTrig, OUTPUT); // hasil dari jaraknya
}
void loop() {
tombolStart = digitalRead(pinStart);
(digitalRead(tombolStart));
if (tombolStart == LOW)
{
//pengukuran ultrasonic
//untuk pengukuran jarak
digitalWrite (pinTrig, HIGH);
delay(10);
digitalWrite (pinTrig, LOW);
timer = pulseIn (pinEcho, HIGH);
jarak = timer/58;
lcd.clear();
lcd.setCursor (2,0);
lcd.print("ALAT DIMULAI");
for(int i= 0; i <= 100; i++)// loading 100%
{
lcd.setCursor (6,1);
if (i<100)
{
lcd.print(" ");
}
if (i<10)
{
lcd.print(" ");
}
lcd.print(i);
lcd.print("%");
delay(50);
}
delay (100);
//definisi menurut pengukuran dari ultrasonic
if (jarak >= 0 && jarak <= 30){
//Pemberitahuan ke user waterpump urine ON
lcd.clear();
lcd.setCursor (0,0);
lcd.print("PENGISIAN URINE");
digitalWrite(pinLedHijau, HIGH);
analogWrite(pinRelay1, 255);
delay (5000);
digitalWrite(pinLedHijau, LOW);
analogWrite(pinRelay1, 0);
lcd.clear();
//lanjut pengisian bittern
lcd.setCursor (2,0);
lcd.print("PENGISIAN ");
lcd.setCursor (3,1);
lcd.print("BITTERN");
digitalWrite(pinLedKuning, HIGH);
analogWrite(pinRelay2, 255);
delay (5000);
digitalWrite(pinLedKuning, LOW);
analogWrite(pinRelay2, 0);
lcd.clear();
//lanjut pengadukan
lcd.setCursor (2,0);
lcd.print("PENGADUKAN ON");
digitalWrite(pinLedBiru, HIGH);
analogWrite(pinRelay3, 255);
delay (5000);
digitalWrite(pinLedBiru, LOW);
analogWrite(pinRelay3, 0);
lcd.clear();
//Pemberitahuan ke user Masukkan NaOH
lcd.clear();
lcd.setCursor (2,0);
lcd.print("MASUKKAN NAOH");
digitalWrite(pinLedUngu, HIGH);
delay (5000);
digitalWrite(pinLedUngu, LOW);
lcd.clear();
return;
}
else if (jarak >= 30 && jarak <= 60){
//Pemberitahuan ke user waterpump Bittern ON
lcd.clear();
lcd.setCursor (2,0);
lcd.print("PENGISIAN ");
lcd.setCursor (3,1);
lcd.print("BITTERN");
digitalWrite(pinLedKuning, HIGH);
analogWrite(pinRelay2, 255);
delay (5000);
digitalWrite(pinLedKuning, LOW);
analogWrite(pinRelay2, 0);
lcd.clear();
//Pemberitahuan ke user Motor pengaduk ON
lcd.setCursor (2,0);
lcd.print("PENGADUKAN ON");
digitalWrite(pinLedBiru, HIGH);
analogWrite(pinRelay3, 255);
delay (5000);
digitalWrite(pinLedBiru, LOW);
analogWrite(pinRelay3, 0);
lcd.clear();
//Pemberitahuan ke user Masukkan NaOH
lcd.clear();
lcd.setCursor (2,0);
lcd.print("MASUKKAN NAOH");
digitalWrite(pinLedUngu, HIGH);
delay (5000);
digitalWrite(pinLedUngu, LOW);
lcd.clear();
return;
}
else if (jarak >= 60){
//Pemberitahuan ke user Motor pengaduk ON
lcd.clear();
lcd.setCursor (2,0);
lcd.print("PENGADUKAN ON");
digitalWrite(pinLedBiru, HIGH);
analogWrite(pinRelay3, 255);
delay (5000);
digitalWrite(pinLedBiru, LOW);
analogWrite(pinRelay3, 0);
lcd.clear();
//Pemberitahuan ke user Masukkan NaOH
lcd.clear();
lcd.setCursor (2,0);
lcd.print("MASUKKAN NAOH");
digitalWrite(pinLedUngu, HIGH);
delay (5000);
digitalWrite(pinLedUngu, LOW);
lcd.clear();
return;
}
}
else if (tombolStart == HIGH ){
lcd.setCursor (2,0);
lcd.print("Tekan Tombol");
delay(100);
}
}