void setup() {
Serial.begin(115200);
}
void loop() {
randomSeed(micros()); // seed random
float ppm = random((0, 11001) / 100.0);
float u_aman = fuzzy_aman(ppm);
float u_waspada = fuzzy_waspada(ppm);
float u_bahaya = fuzzy_bahaya(ppm);
String status;
if (u_aman >= u_waspada && u_aman >= u_bahaya) status = "AMAN";
else if (u_waspada >= u_bahaya) status = "WASPADA";
else status = "BAHAYA";
Serial.printf("PPM: %.1f | Status: %s\n", ppm, status.c_str());
Serial.printf(" μAman = %.2f\n", u_aman);
Serial.printf(" μWaspada = %.2f\n", u_waspada);
Serial.printf(" μBahaya = %.2f\n\n", u_bahaya);
delay(2000);
}
float fuzzy_aman(float x) {
if (x <= 30) return 1.0;
if (x >= 40) return 0.0;
return (40 - x) / 10.0;
}
float fuzzy_waspada(float x) {
if (x <= 30 || x >= 90) return 0.0;
if (x <= 60) return (x - 30) / 30.0;
return (90 - x) / 30.0;
}
float fuzzy_bahaya(float x) {
if (x <= 80) return 0.0;
if (x >= 120) return 1.0;
return (x - 80) / 40.0;
}