#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
const int sensorLow = 2; // Pin untuk sensor LOW
const int sensorHigh = 6; // Pin untuk sensor HIGH
const int stop = 7;// Pin untuk indikator emergency
const int pump = 4; // Pin untuk indikator pompa
const int error = 5; // Pin untuk indikator error
const int emergency = 3; // Pin untuk emergency
volatile bool emergencyStop = false;
bool eerroorr = false;
void setup() {
pinMode(sensorLow, INPUT);
pinMode(sensorHigh, INPUT);
pinMode(emergency, INPUT_PULLUP);
pinMode(pump, OUTPUT);
pinMode(error, OUTPUT);
pinMode(stop, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
attachInterrupt(digitalPinToInterrupt(emergency), EmergencyInterrupt, FALLING);
}
void loop() {
int memory = 0;
int sensorL = digitalRead(sensorLow);
int sensorH = digitalRead(sensorHigh);
if (sensorL == LOW && sensorH == LOW) {
digitalWrite(pump, HIGH); // Hidupkan pompa
digitalWrite(error, LOW); // Matikan indikator error
lcd.clear();
lcd.print("Pengisian");
memory = 1; // Set status pengisian
}
else if(sensorH == HIGH && sensorL == HIGH) {
digitalWrite(pump, LOW); // Matikan pompa
digitalWrite(error, LOW); // Matikan indikator error
lcd.clear();
lcd.print("Pengosongan");
memory = 2; // Set status pengosongan
}
else if(sensorH == HIGH && sensorL == LOW) {
digitalWrite(pump, LOW); // Matikan pompa
digitalWrite(error, HIGH); // Hidupkan indikator error
lcd.clear();
lcd.print("EROR");
memory = 3;
eerroorr = true;
}
if (eerroorr) {
if (emergencyStop) {
digitalWrite(pump, LOW);
digitalWrite(error, LOW);
digitalWrite(stop, HIGH);
lcd.clear();
lcd.print("Emergency Stop!");
while (emergencyStop) {}
lcd.clear();
memory = 4;
}
}
while (digitalRead(sensorL) == HIGH && digitalRead(sensorH) == LOW && memory == 1) {
digitalWrite(pump, HIGH);
lcd.clear();
lcd.print("Pengisian");
}
while (digitalRead(sensorH) == HIGH && digitalRead(sensorL) == HIGH && memory == 2) {
digitalWrite(pump, LOW);
lcd.clear();
lcd.print("Pengosongan");
}
}
void EmergencyInterrupt() {
emergencyStop = digitalRead(emergency) == LOW && eerroorr;
}