#include #include #include "GravityTDS.h" // Set the LCD number of columns and rows int lcdColumns = 16; int lcdRows = 2; // Initialize LCD LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); // Sensor turbidity int pinTurb = A0; float V; float kekeruhan; float VRata2; float VHasil; float ParameterKekeruhan = 5; // Sesuaikan dengan parameter kekeruhan yang diinginkan // Sensor TDS #define TdsSensorPin A1 GravityTDS gravityTds; float temperature = 500, tdsValue = 0; float ParameterPPM = 500; // Sesuaikan dengan parameter ppm yang diinginkan // LED const int ledMerah = 8; // Pin untuk LED merah const int ledHijau = 9; // Pin untuk LED hijau void setup() { // Initialize LCD lcd.init(); // Turn on LCD backlight lcd.backlight(); Serial.begin(9600); Serial.println("SENSOR KEKERUHAN AIR"); delay(2000); pinMode(ledMerah, OUTPUT); pinMode(ledHijau, OUTPUT); // Initialize turbidity sensor gravityTds.setPin(TdsSensorPin); gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC gravityTds.begin(); //initialization } void loop() { // Read turbidity sensor V = 0; for (int i = 0; i < 800; i++) { V += ((float)analogRead(pinTurb) / 1023) * 5; } VRata2 = V / 800; VHasil = roundf(VRata2 * 10.0f) / 10.0f; if (VHasil < 2.5) { kekeruhan = 5; } else { kekeruhan = -1120.4 * square(VHasil) + 5742.3 * VHasil - 4353.8; } // Read TDS sensor gravityTds.setTemperature(temperature); // set the temperature and execute temperature compensation gravityTds.update(); //sample and calculate tdsValue = gravityTds.getTdsValue(); // then get the value // Print to LCD lcd.clear(); if (tdsValue > ParameterPPM) { lcd.setCursor(0, 0); lcd.print("Kaporit Berlebih"); } else { lcd.setCursor(0, 0); lcd.print("Kaporit Normal"); } lcd.print("TDS: "); lcd.print(tdsValue); lcd.print(" ppm"); // lcd.setCursor(0, 1); // lcd.print("Turbidity: "); // lcd.print(kekeruhan); // Control LED based on ppm and turbidity if (tdsValue > ParameterPPM || kekeruhan > ParameterKekeruhan) { digitalWrite(ledMerah, HIGH); // LED merah menyala digitalWrite(ledHijau, LOW); // LED hijau mati } else { digitalWrite(ledMerah, LOW); // LED merah mati digitalWrite(ledHijau, HIGH); // LED hijau menyala } if (kekeruhan > ParameterKekeruhan) { lcd.setCursor(0, 1); lcd.print("Air Keruh"); } else { lcd.setCursor(0, 1); lcd.print("Air Tidak Keruh"); } // Print to serial monitor Serial.print("TDS: "); Serial.print(tdsValue); Serial.print(" ppm"); Serial.print("\tTurbidity: "); Serial.println(kekeruhan); // Send data to ESP32 Serial.print(kekeruhan); Serial.print(","); Serial.println(tdsValue); delay(200); }