#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adjust the address and dimensions if your LCD is different
#define sensor_pin 0 // Adjust the pin if connected to a different analog pin
int read_ADC;
int ntu;
#define RELAY1_PIN 12 // Define the pins for the relays
#define RELAY2_PIN 13
#define RELAY3_PIN 14
bool relay2_active = false; // Flag to track whether relay 2 is active
unsigned long relay2_start_time = 0; // Time when relay 2 was activated
void setup() {
pinMode(sensor_pin, INPUT);
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
pinMode(RELAY3_PIN, OUTPUT);
Serial.begin(115200);
lcd.init(); //menginisialisasi tampilan
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Welcome To ");
lcd.setCursor(0, 1);
lcd.print("Turbidity Sensor");
delay(2000);
lcd.clear();
}
void loop() {
read_ADC = analogRead(sensor_pin);
if (read_ADC > 208) read_ADC = 208;
ntu = map(read_ADC, 0, 208, 300, 0);
lcd.setCursor(0, 0);
lcd.print("Turbidity: ");
lcd.print(ntu);
lcd.print(" ");
lcd.setCursor(0, 1);
if (ntu < 10) {
lcd.print("Water Very Clean");
activateRelay(1);
}
else if (ntu >= 10 && ntu < 25) {
lcd.print("Water Norm Clean");
activateRelay(2);
}
else {
lcd.print("Water Very Dirty");
if (!relay2_active) {
relay2_active = true;
relay2_start_time = millis();
}
activateRelay(3);
}
delay(200);
}
void activateRelay(int relayNumber) {
switch (relayNumber) {
case 1:
digitalWrite(RELAY1_PIN, HIGH);
digitalWrite(RELAY2_PIN, LOW);
digitalWrite(RELAY3_PIN, LOW);
break;
case 2:
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, HIGH);
digitalWrite(RELAY3_PIN, LOW);
break;
case 3:
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, HIGH);
//digitalWrite(RELAY3_PIN, LOW); // Activate relay 3
if (millis() - relay2_start_time >= 10000) { // Check if 10 seconds have passed since relay 2 was activated
digitalWrite(RELAY3_PIN, HIGH); // Turn off relay 2
}
break;
default:
// Invalid relay number
break;
}
}