#include <Fuzzy.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int sensorTDSPin = A0;
const int sensorPhPin = A1; // Tambahkan pin untuk sensor pH
Fuzzy *fuzzy = new Fuzzy();
FuzzySet *low = new FuzzySet(0, 0, 1000, 2000);
FuzzySet *medium = new FuzzySet(1000, 2000, 3000, 4000);
FuzzySet *high = new FuzzySet(3000, 4000, 5000, 5000);
void setup() {
lcd.begin(16, 2);
lcd.backlight();
lcd.print("Kelompok 7:");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Amanda, Firnanda,");
delay(1000);
lcd.setCursor(0, 2);
lcd.print("dan Nalla");
delay(2000);
lcd.clear();
Serial.begin(115200);
randomSeed(analogRead(0));
FuzzyInput *tds = new FuzzyInput(1);
tds->addFuzzySet(low);
tds->addFuzzySet(medium);
tds->addFuzzySet(high);
fuzzy->addFuzzyInput(tds);
}
void loop() {
int sensorValue = analogRead(sensorTDSPin);
float tdsValue = map(sensorValue, 0, 1023, 0, 5000);
lcd.setCursor(0, 0);
lcd.print("TDS: ");
lcd.print(tdsValue, 2);
lcd.print(" ppm");
// Menentukan tingkat kejernihan air berdasarkan nilai TDS
lcd.setCursor(0, 1);
if (tdsValue < 1000) {
lcd.print("Sangat Jernih");
} else if (tdsValue < 3000) {
lcd.print("Cukup Jernih");
} else {
lcd.print("Keruh");
}
int phValue = analogRead(sensorPhPin); // Baca nilai dari sensor pH
lcd.setCursor(0, 2);
lcd.print("pH: ");
lcd.print(phValue);
// Menentukan apakah larutan asam, basa, atau netral
if (phValue < 7) {
lcd.print(" (Asam)");
} else if (phValue > 7) {
lcd.print(" (Basa)");
} else {
lcd.print(" (Netral)");
}
fuzzy->setInput(1, tdsValue);
fuzzy->fuzzify();
float output = fuzzy->defuzzify(1);
// The servo control line is removed
delay(1000);
lcd.clear();
}